我的 bash 腳本中有兩個目錄由這兩個變數保存
$SRC
$DEST
我該怎麼做rsync
- 將檔案從 $SRC/ 複製到 $DEST/,
- 驗證 $DEST/* 檔案是否與 $SRC/ 檔案相符(可用的最佳匹配,但速度很慢)
- 然後刪除$SRC/檔案?
我谷歌搜尋的所有內容都給出了執行 rsync 然後刪除 DEST 檔案的範例。
我不明白這一點,為什麼要執行rsync
到目標目錄,然後刪除它?
做一個谷歌搜索,看看我的意思。
答案1
所以移動文件的選項是--remove-source-files
。這裡是手冊頁,並在此處查看一些討論:
https://unix.stackexchange.com/questions/43957/using-rsync-to-move-not-copy-files- Between-directories
請注意,rsync 始終使用校驗和來驗證文件,但這取決於您是否足以滿足您的擔憂。值得注意的是,來自目標的校驗和是在傳輸時計算的,而不是在寫入磁碟後計算的,因此它不是根據結果檔案計算的,而且您不會遇到失敗,除非寫入時操作系統出現錯誤。這裡有一些討論: https://unix.stackexchange.com/questions/30970/does-rsync-verify-files-copied- Between-two-local-drives
如果這不足以滿足您的需求,請考慮編寫腳本來 rsync 文件而不刪除來源,再次執行 rsync 以-c
選擇/複製與校驗和不匹配的文件,然後最後刪除來源檔案rm
或其他內容。
答案2
rsync
這應該是s--remove-source-files
選項的直接使用
rsync --dry-run --stats -av --remove-source-files "$SRC/" "$DEST/"
當您高興該命令將執行您認為它應該執行的操作時,請刪除--dry-run
(也許)。--stats