這是一個用來自動按照日期產生資料夾並移動檔案的腳本,排序完再搭配備份腳本透過rclone、Dropbox Uploader、FTP或是scp上傳到雲端硬碟的前戲腳本,當然也可以融合在一起,寫這個腳本的原因是因為最近買到3TB空間的VPS(可參考VPS介紹 – Letbox),雖然限制了CPU使用率,但空間那麼大,想當然爾要給他操一下囉 😘🍻😻
想法: BT下載好的檔案,每日自動歸類到按照日期產生的資料夾內,然後透過rclone自動上傳到雲端硬碟
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
#!/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 雲端硬碟 🚀🏎🚄
個別使用者每天只能在「我的雲端硬碟」和所有共用雲端硬碟中上傳 750 GB 的檔案。當使用者達到 750 GB 的上限或上傳了大於 750 GB 的單一檔案,當天就無法再上傳其他檔案,不過上傳中的檔案仍可以完成上傳。可以上傳或同步處理的個別檔案大小上限則為 5 TB。
所以如果是兩端都是Google Drive,那可以先在Google Drive API申請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}' '來源端位置' '雲端硬碟端位置'
rclone使用參數簡介
- rclone sync // 同步,也可以改成move來節省本地端空間,另外要注意rclone指令中只能使用真實路徑
- size-only // 同步時只按照檔案大小做比對
- fast-list // 快速列表的指令,要節省記憶體的可取消
- use-mmap // 這個是新版的記憶體優化指令,個人測試在1GB記憶體的VPS上執行可節省200多MB記憶體
- tpslimit 3 // 記憶體小於512MB的調低tpslimit的數字
- transfers 3 // 網路頻寬低於1Gbps的調低transfers的數字
- max-duration 23h // rclone的執行時間
- 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』的資料夾,刪除此目錄底下的內容即可~ 🐱🚀
ref.
- Dropbox Uploader的自動備份腳本
- 粉好用ㄟ自動備份資料庫、網站到信箱、FTP的腳本
- Rclone v1.46 release
- rclone – Rclone VFS and MergerFS Setup
- Google Workspace 管理員說明 – 設定雲端硬碟檔案串流
API傳輸速度實測