Rsync はフォルダの内容を含みますが、親フォルダは除外します

Rsync はフォルダの内容を含みますが、親フォルダは除外します

私は答えを求めてウェブをくまなく調べましたが無駄でした...私は目的地でこの結果を達成しようとしています

Media_Files
    Web
        Print

私のソースファイルは

Media_Files
    Assets
        Web
            Print

フォルダーを除外、削除、除去、またはフィルタリングしながら、フォルダーの使用をAssets維持するにはどうすればよいですか? ありがとうございますWeb/Printrsync

答え1

これを 2 つの手順で実行する必要があります。

  1. を除くすべてをコピーしますMedia_Files/Assets( の下に他のものがあると仮定しますMedia_Files)。
  2. コピーMedia_Files/Assets/Web

最初のステップは

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

これにより、Madia_Filesディレクトリが(権限やその他のメタデータを含めて)再帰的に に(冗長的に)コピーされdestinationdestinationのコピーが作成されます(ソース パスのMedia_Files末尾を削除して、代わりに を作成します)。/destination/Media_Files

除外パターンにより、Assets直下のディレクトリは無視されます。Media_Files/Assets/

2番目のステップは、

rysync -av Media_Files/Assets/Web destination

/ソース パスの末尾にがない場合は、Webが 内に配置されることを意味しますdestination

他にコピーする必要のあるMedia_Files/Assetsファイルやディレクトリがある場合は、代わりにWeb

rsync -av Media_Files/Assets/ destination

これにより、 のすべてMedia_Files/Assets(Webディレクトリとその内容を含む) が に直接コピーされますdestination


代わりに、次の 2 つの手順を実行することもできます。

  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最後の 2 つのコマンドは、保持したいの内容(例destination/Assets/Web) のみを移動し、残りを削除するように変更されます (ここでは、表示されているすべてのファイルとディレクトリを移動し、サブディレクトリが完全に空になると想定していますAssets)。

答え2

結果を得るには次のコマンドを使用します

rsync -azvP メディアファイル/アセット/Web メディアファイル/

関連情報