rsync ターゲットの既存のサブディレクトリのみ

rsync ターゲットの既存のサブディレクトリのみ

2つのディレクトリがあり、ターゲットディレクトリにすでに存在するサブディレクトリのコンテンツのみを同期する必要があります。たとえば、

ソースコードディレクトリ:

  • フォルダA
  • フォルダB
  • フォルダC
  • フォルダD
  • フォルダE

ターゲットディレクトリ:

  • フォルダB
  • フォルダD
  • フォルダ

フォルダBとフォルダDの一意のコンテンツをソースからターゲットに同期する必要があります(フォルダZはソースに存在しないため無視する必要があります)。同様に、フォルダA、C、Eをコピーするためにターゲットディレクトリは必要ありません。

デフォルトでは、「対象のすべてのサブディレクトリに対して同じサブディレクトリがソースに存在する場合、ソースはそのサブディレクトリの内容を同期します。」

役に立つならこれはローカルディレクトリです。

これが意味があることを願っています。ご協力ありがとうございます!

ベストアンサー1

このようなスクリプトを使用できます。

(
    cd destination &&
        for d in *
        do
            [ -d "$d" -a -d source/"$d" ] && rsync -a source/"$d" .
        done
)

スタンドアロンの場合、角括弧は( ... )ディレクトリの変更をローカライズするためにのみ使用されるため、必要ありません。

ファイルがソースに存在しなくなったときにターゲットのファイルを削除するには、に追加します--deletersync

おすすめ記事