Jawaban:
Saya pikir Anda dapat menggunakan -no-
opsi rsync
untuk TIDAK menyalin kepemilikan atau izin file yang sedang Anda sinkronkan.
--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).
Melihat-lihat halaman manual saya yakin Anda ingin menggunakan sesuatu seperti ini:
$ rsync -avz --no-perms --no-owner --no-group ...
Untuk menghapus file yang tidak ada, Anda dapat menggunakan --delete
sakelar:
$ rsync -avz --no-perms --no-owner --no-group --delete ....
Adapun cap waktu saya tidak melihat cara untuk menjaga ini tanpa mengubah bagaimana Anda akan melakukan perbandingan file SUMBER vs DEST. Anda mungkin ingin mengatakan rsync
untuk mengabaikan cap waktu menggunakan sakelar ini:
-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.
Untuk cap waktu, --no-times
lakukan apa yang Anda cari.
Saya pikir lebih mudah untuk menghindari opsi -a
$ -a, --archive archive mode; equals -rlptgoD (no -H,-A,-X)
dan atur hanya opsi yang Anda inginkan.
Jika Anda menyukai semua opsi tetapi tidak modifikasi pengguna -o , grup -g , time -t dan izin -p sehingga Anda bisa mengurangi keempat opsi ini dari arsip yang setara.
$ -rlD
Untuk menghapus file pada tujuan, gunakan opsi --delete .
Untuk pertanyaan Anda: Tapi saya pikir semua file akan diperiksa - rsync tidak dapat mentransfer / memeriksa hanya file yang diubah hanya oleh konten.
-l
adalah untuk tautan, -D
perangkat (diperlakukan sama dengan --specials
), saya pikir -r
sendiri sudah cukup jika kita berbicara konten.
Saya pikir apa yang Anda cari adalah pilihannya
rsync -r --size-only
dari halaman manual:
--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.
Jika Anda benar-benar ingin menghapus file yang hilang dalam penggunaan sumber dir --delete
Anda dapat memaksa rsync untuk mengabaikan pemeriksaan berdasarkan waktu dan ukuran file mod dan menggunakan pendekatan berbasis chksum dengan tombol "-c".
-c, --checksum skip based on checksum, not mod-time & size
Ini berarti bahwa perlu membandingkan seluruh file dalam potongan (dan mentransfer metadata yang relevan bolak-balik antara sumber dan tujuan agar hal ini terjadi) terlepas dari apakah waktu dan ukuran file cocok atau tidak, tetapi hanya akan mentransfer potongan yang berbeda antara sumber dan tujuan.
Menggunakan switch ini bersama dengan switch lain yang disarankan oleh orang lain harus membatasi apa yang disalin (hanya menyalin apa yang telah berubah), dan memiliki manfaat melakukan pemeriksaan konsistensi antara sumber dan tujuan, TETAPI itu memakan waktu lebih lama tergantung pada kecepatan tautan Anda sebagai harus chksum potongan file di kedua sisi dan bandingkan).
>f..T...
yang menunjukkan fileflags dan waktu modifikasi sedang ditetapkan pada tujuan, yang adalah apa yang saya coba hindari.