再帰的なフォルダーへの同期にrsyncを使用する方法を知りたいが、新しいファイルまたは更新されたファイル(所有者、グループ、またはタイムスタンプではなくコンテンツのみ)を更新するだけで、ソースに存在しないファイルを削除したい。
-no-
オプションrsync
に[〜#〜] not [〜#〜]同期しているファイルの所有権または権限をコピーします。
--no-OPTION
You may turn off one or more implied options by prefixing the option
name with "no-". Not all options may be pre‐fixed with a "no-":
only options that are implied by other options (e.g. --no-D,
--no-perms) or have different defaults in various circumstances (e.g.
--no-whole-file, --no-blocking-io, --no-dirs). You may specify
either the short or the long option name after the "no-" prefix (e.g.
--no-R is the same as --no-relative).
For example: if you want to use -a (--archive) but don’t want -o
(--owner), instead of converting -a into -rlptgD, you could specify
-a --no-o (or -a --no-owner).
The order of the options is important: if you specify --no-r -a, the
-r option would end up being turned on, the opposite of -a
--no-r. Note also that the side-effects of the --files-from
option are NOT positional, as it affects the default state of several
options and slightly changes the meaning of -a (see the --files-from
option for more details).
マニュアルページを見ると、次のようなものを使用したいと思います。
$ rsync -avz --no-perms --no-owner --no-group ...
存在しないファイルを削除するには、--delete
スイッチ:
$ rsync -avz --no-perms --no-owner --no-group --delete ....
タイムスタンプについては、SOURCEファイルとDESTファイルの比較方法を変更せずにこれを維持する方法がありません。このスイッチを使用して、タイムスタンプを無視するようにrsync
に指示することができます。
-I, --ignore-times
Normally rsync will skip any files that are already the same size
and have the same modification timestamp. This option turns off this
"quick check" behavior, causing all files to be updated.
タイムスタンプの場合、--no-times
はあなたが探していることをするかもしれません。
-aオプションを避ける方が簡単だと思います
$ -a, --archive archive mode; equals -rlptgoD (no -H,-A,-X)
必要なオプションのみを設定します。
ユーザー-o、グループ-g、時間-tおよび権限-pなので、同等のアーカイブからこれらの4つのオプションを差し引くことができます。
$ -rlD
宛先のファイルを削除するには、オプション-deleteを使用してください。
あなたの質問:しかし、私はすべてのファイルがチェックされると思います-rsyncはコンテンツによってのみ変更されたファイルのみを転送/チェックすることはできません。
あなたが探しているのはオプションだと思います
rsync -r --size-only
マニュアルページから:
--size-only
This modifies rsync’s "quick check" algorithm for finding files that need to be transferred,
changing it from the default of transferring files with either a changed size or a changed
last-modified time to just looking for files that have changed in size. This is useful when
starting to use rsync after using another mirroring system which may not preserve timestamps
exactly.
ソースディレクトリにないファイルを本当に削除したい場合は、--delete
を使用してください。
Rsyncにファイルのmod時間とサイズに基づくチェックを強制的に無視させ、「-c」スイッチでchksumベースのアプローチを使用できます。
-c, --checksum skip based on checksum, not mod-time & size
これは、ファイルの時間とサイズが一致するかどうかに関係なく、ファイル全体をチャンクで比較する(およびソースと宛先の間で関連するメタデータを送受信する)必要があるが、異なるチャンクのみを転送することを意味しますソースと宛先の間。
このスイッチを他の人が提案した他のスイッチと組み合わせて使用すると、コピーされる内容が制限され(変更されたもののみがコピーされます)、ソースと宛先の間で整合性チェックを実行できるという利点がありますが、リンク速度によっては時間がかかりますファイルのチャンクを両側でchksumして比較する必要があります)。