必要なタスクを実行するために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.conf
rsync