- 逆向行駛 - https://520.be/ -

自動按照日期產生資料夾並移動檔案的腳本

IMG_2026_07_25~08_46_24~1152x896

這是一個用來自動按照日期產生資料夾並移動檔案的腳本,排序完再搭配備份腳本透過rclone、Dropbox Uploader、FTP或是scp上傳到雲端硬碟的前戲腳本,當然也可以融合在一起,寫這個腳本的原因是因為最近買到3TB空間的VPS(可參考VPS介紹 – Letbox [1]),雖然限制了CPU使用率,但空間那麼大,想當然爾要給他操一下囉 😘🍻😻


🟦 🟦 🟦

想法: BT下載好的檔案,每日自動歸類到按照日期產生的資料夾內,然後透過rclone自動上傳到雲端硬碟

#!/bin/bash
# Move files and create folders sorted by year and month
##############################
# 此腳本是輸出的是年月,可改成下方的年月日
date=$(date +"%Y-%m")
# 此範例是2019-11-13
# date=$(date +"%Y-%m-d")
# 來源目錄
srcdir="/home/backup"
# 輸出目錄
destdir="/home/cpanel_backup"
##############################
# 在輸出目錄底下建立目前日期的目錄
mkdir -p $destdir/$date

# 移動來源目錄底下的檔案到剛剛產生的目錄底下
find $srcdir -name "*.mp4" -type f -exec mv -f {} $destdir/$date \;
find $srcdir -name "*.m4v" -type f -exec mv -f {} $destdir/$date \;
find $srcdir -name "*.mkv" -type f -exec mv -f {} $destdir/$date \;
find $srcdir -name "*.wmv" -type f -exec mv -f {} $destdir/$date \;
find $srcdir -name "*.avi" -type f -exec mv -f {} $destdir/$date \;
find $srcdir -name "*.ts" -type f -exec mv -f {} $destdir/$date \;
find $srcdir -name "*.mpg" -type f -exec mv -f {} $destdir/$date \;

# 變更權限方便FTP下載
chown -R admin.admin $destdir

# 上傳
/usr/bin/rclone sync -v --progress -u --size-only --fast-list --use-mmap --stats 15s --tpslimit-burst 2 --transfers 2 --log-file /log/rclone/rclone.log --create-empty-src-dirs --max-transfer 750G --max-duration 23h --include '*.{jpg,mp4,mkv,m4v,mpg,avi,wmv,mp3,m4a,nfo,srt,ass,zip,rar,7z}' '來源端位置' gdrive-OOXX:'雲端硬碟端位置'

# ring a bell
printf '\007'

exit 0

🟦 🟦 🟦

透過rclone同步到雲端硬碟端

腳本執行前,務必先下試運行指令dry-run測試rclone,確認正常才再開始動作 🏄‍♀️⛷🏄‍♂️

另一個重點是drive-server-side-across-configs,由於750GB的限制是Google的官方策略:將檔案上傳至 Google 雲端硬碟 [5] 🚀🏎🚄

個別使用者每天只能在「我的雲端硬碟」和所有共用雲端硬碟中上傳 750 GB 的檔案。當使用者達到 750 GB 的上限或上傳了大於 750 GB 的單一檔案,當天就無法再上傳其他檔案,不過上傳中的檔案仍可以完成上傳。可以上傳或同步處理的個別檔案大小上限則為 5 TB。

所以如果是兩端都是Google Drive,那可以先在Google Drive API [6]申請ID,然後透過該API上傳。採用此方法,可以多傳一次,就變成約1.5TB的每日流量 💊🧰💉

/usr/bin/rclone sync --dry-run --drive-server-side-across-configs --progress -u --size-only --fast-list --use-mmap --stats 15s --tpslimit-burst 3 --transfers 3 --log-file /log/rclone/rclone.log --create-empty-src-dirs --max-transfer 700G --max-duration 23h --include '*.{jpg,png,mp4,mkv,m4v,ts,mpg,avi,wmv,rmvb,flv,mp3,m4a,m3u,m3u8,sfv,md5,sha1,pdf,nfo,srt,ass,iso,zip,rar,7z}' '<strong>來源端位置</strong>' '<strong>雲端硬碟端位置</strong>'

rclone使用參數簡介

  1. rclone sync // 同步,也可以改成move來節省本地端空間,另外要注意rclone指令中只能使用真實路徑
  2. size-only // 同步時只按照檔案大小做比對
  3. fast-list // 快速列表的指令,要節省記憶體的可取消
  4. use-mmap // 這個是新版的記憶體優化指令,個人測試在1GB記憶體的VPS上執行可節省200多MB記憶體
  5. tpslimit 3 // 記憶體小於512MB的調低tpslimit的數字
  6. transfers 3 // 網路頻寬低於1Gbps的調低transfers的數字
  7. max-duration 23h // rclone的執行時間
  8. include ‘*.mp4’ // 當使用了include此指令,同步過程中只會傳輸符合的檔案,但不可同時與排除指令(exclude)共用

🟦 🟦 🟦

GoogleDriveFS番外篇

如果在小硬碟空間的VPS,可使用登錄檔來管理快取空間大小。

# 登錄碼位置

HKEY_LOCAL_MACHINE\Software\Google\DriveFS

# 控制快取的本機空間用量

MinFreeDiskSpaceKBytes

類型:REG_QWORD(十進位)
單位:KB
1GB:1000000
5GB:5000000
10GB:10000000

### 快取檔案的本機位置

%LOCALAPPDATA%\Google\DriveFS

此目錄下有一長串數字的資料夾,進入後會發現有一個『content_cachecontent_cache』的資料夾,刪除此目錄底下的內容即可~ 🐱‍🚀

MinFreeDiskSpaceKBytes [7]
MinFreeDiskSpaceKBytes

🟦 🟦 🟦

ref.

  1. Dropbox Uploader的自動備份腳本 [8]
  2. 粉好用ㄟ自動備份資料庫、網站到信箱、FTP的腳本 [9]
  3. Rclone v1.46 release [10]
  4. rclone – Rclone VFS and MergerFS Setup [11]
  5. Google Workspace 管理員說明 – 設定雲端硬碟檔案串流 [12]

API傳輸速度實測

列印本文 [19] 👨‍👩‍👧‍👦 5 次瀏覽