ソースフォルダに見つからないサブディレクトリを変更しないようにrsyncを設定できますか?

ソースフォルダに見つからないサブディレクトリを変更しないようにrsyncを設定できますか?

必要なタスクを実行するためにrsyncを実行する方法を見つけるのに苦労しています。基本的に私に必要なのは、以下のように複数のサブディレクトリを持つ単一のソースフォルダです。

-もし文書ソースフォルダの指定されたサブディレクトリへの変更については、これらの変更をターゲットに同期します(ファイルを更新し、ソースフォルダに存在しないファイルを削除します)。

- もしフォルダソースにはあるがターゲットにない場合は、フォルダとその内容の両方をターゲットに同期します。

- もしフォルダターゲットにはあるがソースにない場合は何もしないでください(削除しないでください)。

ディレクトリ構造は次のとおりです。

Source Folder
   Folder 1
      File 1 unchanged.txt
   Folder 2
      File 2 newer.txt
   Folder 3
      File 3.txt

Destination Folder
   Folder 1
      File 1 unchanged.txt
   Folder 2
      File 2 old.txt (to be replaced with File 2 newer.txt)
   (Folder 3 not yet in destination, to be added from source)
   Folder X (not in source, to be left untouched)

答え1

man rsyncによると、次のことができます。

--exclude=PATTERN

または、リストが大きすぎる場合は、次のものを使用できます。

--exclude-from=FILE 

答え2

あなたが説明するのは、rsyncの基本的な標準動作です。

他の動作が必要な場合は、次のいずれかの--deleteオプションを使用する必要があります。

私の主張を証明するテストは次のとおりです。

 $ mkdir tmp1
 $ mkdir tmp2
 $ mkdir tmp1/1
 $ mkdir tmp1/2
 $ mkdir tmp2/1
 $ mkdir tmp2/X
 $ touch tmp1/1/1.txt
 $ touch tmp1/2/2.txt
 $ rsync -avz tmp1 tmp2
 sending incremental file list
 tmp1/
 tmp1/1/
 tmp1/1/1.txt
 tmp1/2/
 tmp1/2/2.txt

 sent 208 bytes  received 62 bytes  540.00 bytes/sec
 total size is 0  speedup is 0.00
 $ ls tmp2
 1  tmp1  X

ディレクトリXが影響を受けずにそのまま存在することがわかります。

デーモンとして使用する場合は、rsync構成ファイルのオプションが適用されることがあります。

ここまたは開始するユーザーのホームディレクトリに/etc/rsyncd.conf削除オプションが設定されていることを確認してください。rsyncd.confrsync

関連情報