Linux
如何僅將失去的文件從源文件夾移動到目標文件夾
閱讀和閱讀所有內容已經花費了很多小時……測試 rsync、Grsync 和 Unison……沒有希望!在兩個本地文件夾之間 rsync 複製/同步文件的正常方法是“複製整個文件夾本身!-而不是想像中的內容!-沒有別的!
為了進行實驗,我在同一個根目錄下創建了兩個名稱不同的文件夾。當得到這個結果時,我將它們分開,並給源與目標相同的名稱,以防這是原因。
rsync -zrahvWnt --delete-after ~/Documents/test3/source-DRV ~/Documents/test3/dest-T
我還在 Unison 中使用了所有可能的選項.. 沒有希望!結果一樣!
“解決有利於第一個根的衝突”“從右向左傳播”“從右向左”
沒有一個工作不同!都給出了相同的結果:將“整個”文件夾複製到另一個文件夾“內部”!
我想要的基本上很簡單:
- 檢查源中目標中失去的文件。
- 移動 - 最好,但複製是可以的
- 只失去從源到目標文件夾的文件。
- 對大小、日期相同且在兩個文件夾中找到的文件不執行任何操作。
這將導致一個“完整文件夾” - 作為目標,以及一個作為源的“無用文件夾”,手動刪除沒有問題。
$$ Edit: $$在實施解決方案時,我發現我使用了 -n 選項,這使得“空執行”..這可能是沒有任何效果的另一個原因。我刪除了它,一切都按預期進行!
如果我正確理解您的意圖,您需要做的就是在您的第一個參數後面附加一個斜杠
rsync
。也就是說,而不是寫rsync -zrahvWt --remove-source-files ~/Documents/test3/source-DRV ~/Documents/test3/dest-T
寫
rsync -zrahvWt --remove-source-files ~/Documents/test3/source-DRV/ ~/Documents/test3/dest-T
編輯 我已經根據 OP 關於回答他/她自己的問題的評論修改了上述命令。
關於參數
rsync
:
- -z:在傳輸過程中壓縮文件數據
- -r:遞歸:複製目前文件夾下的文件夾及其文件,而不僅僅是目前文件夾下的文件
- -a:保留幾乎所有內容(日期、權限等)
- -h:以人類可讀的格式輸出數字
- -v:詳細:在螢幕上列印更多的程序細節
- -W:複製整個文件,不只更新數據的差異。
更多細節可以通過執行找到
man 1 rsync
。