Risposte:
Penso che si possa utilizzare le -no-
opzioni per rsync
per non copiare la proprietà o permessi dei file che stai sync'ing.
--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).
Guardando attraverso la pagina man credo che vorresti usare qualcosa del genere:
$ rsync -avz --no-perms --no-owner --no-group ...
Per eliminare i file che non esistono è possibile utilizzare l' --delete
opzione:
$ rsync -avz --no-perms --no-owner --no-group --delete ....
Per quanto riguarda il timestamp, non vedo un modo per mantenerlo senza alterare il modo in cui faresti il confronto tra i file SOURCE e DEST. Potresti voler dire rsync
di ignorare i timestamp usando questa opzione:
-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.
Per i timestamp, --no-times
potresti fare quello che stai cercando.
Penso che sia più facile evitare l' opzione -a
$ -a, --archive archive mode; equals -rlptgoD (no -H,-A,-X)
e imposta solo le opzioni desiderate.
Se ti piacciono tutte le opzioni ma non le modifiche dell'utente -o , group -g , time -t e autorizzazioni -p , puoi sottrarre queste quattro opzioni dall'equivalente dell'archivio.
$ -rlD
Per eliminare i file sulla destinazione, utilizzare l'opzione - Elimina .
Alla tua domanda: ma penso che tutti i file verranno controllati - rsync non può trasferire / controllare solo i file che sono stati modificati solo dal contenuto.
-l
è per link, -D
dispositivi (trattati come --specials
), penso che -r
da solo sia sufficiente se parliamo di contenuto.
Penso che quello che stai cercando sia l'opzione
rsync -r --size-only
dalla pagina man:
--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.
Se vuoi veramente cancellare i file mancanti nella directory sorgente usa --delete
È possibile forzare rsync a ignorare i controlli in base al tempo e alle dimensioni del file mod e utilizzare un approccio basato su chksum con l'opzione "-c".
-c, --checksum skip based on checksum, not mod-time & size
Ciò significa che deve confrontare l'intero file in blocchi (e trasferire avanti e indietro i metadati pertinenti tra origine e destinazione affinché ciò accada), indipendentemente dal fatto che il tempo e le dimensioni del file corrispondano o meno, ma trasferirà solo i blocchi che differiscono tra la fonte e la destinazione.
L'uso di questo switch insieme agli altri switch suggeriti da altri dovrebbe limitare ciò che viene copiato (solo copiando ciò che è cambiato) e ha il vantaggio di fare un controllo di coerenza tra sorgente e destinazione, MA impiega più tempo a seconda della velocità del tuo collegamento come deve chksum i blocchi di file su entrambi i lati e confrontare).
>f..T...
che suggerisce che i flag di file e il tempo di modifica sono impostati sulla destinazione, che è ciò che sto cercando di evitare.