Rsync 包含資料夾內容但排除父資料夾

Rsync 包含資料夾內容但排除父資料夾

我在網上搜索但沒有找到答案......我試圖在目的地達到這個結果

Media_Files
    Web
        Print

我的原始檔案是

Media_Files
    Assets
        Web
            Print

如何排除、刪除、刪除或過濾資料Assets夾但保留Web/Print資料夾使用rsync?謝謝

答案1

您需要分兩步驟執行此操作:

  1. 複製除 之外的所有內容Media_Files/Assets(假設 下還有其他內容Media_Files)。
  2. 複製Media_Files/Assets/Web

第一步可以透過以下方式完成

rsync -av --exclude=/Assets/ Media_Files/ destination

這將(詳細地)遞歸地將Madia_Files目錄(包括權限和其他元資料)複製到destination,製作destination的副本(刪除來源路徑上的Media_Files尾隨以建立)。/destination/Media_Files

由於排除模式,Assets直接位於其下的目錄將被忽略。Media_Files/Assets/

第二步可以透過以下方式完成

rysync -av Media_Files/Assets/Web destination

/來源路徑末尾缺少意味著Web將被放入其中destination

Media_Files/Assets如果除此之外您還需要複製其他檔案或目錄Web,請改用

rsync -av Media_Files/Assets/ destination

這會將所有內容Media_Files/Assets(包括Web目錄及其內容)直接複製到destination.


您可以執行以下兩個步驟:

  1. destination一個精確的的副本Media_Files,包括Media_Files/Assets.
  2. destination/Assets手動移動您想要移入destination並刪除的內容destination/Assets

簡而言之:

rsync -av Media_Files/ destination
mv -i destination/Assets/* destination
rmdir destination/Assets

最後兩個命令將被修改為僅移動destination/Assets您想要保留的內容(例如destination/Assets/Web),並刪除其餘內容(這裡我假設您想要移動所有可見文件和目錄,並且這使Assets子目錄完全為空)。

答案2

您可以使用以下命令來實現結果

rsync -azvP Media_Files/資產/Web Media_Files/

相關內容