Odpowiedzi:
Myślę, że można korzystać z -no-
opcji rsync
, aby nie kopiować własności lub uprawnień plików synchronizując jesteś.
--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).
Przeglądając stronę podręcznika, myślę, że chciałbyś użyć czegoś takiego:
$ rsync -avz --no-perms --no-owner --no-group ...
Aby usunąć pliki, które nie istnieją, możesz użyć --delete
przełącznika:
$ rsync -avz --no-perms --no-owner --no-group --delete ....
Jeśli chodzi o znacznik czasu, nie widzę sposobu, aby to zachować bez zmiany sposobu porównania plików SOURCE z plikami DEST. Możesz chcieć rsync
zignorować znaczniki czasu za pomocą tego przełącznika:
-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.
W przypadku znaczników czasu --no-times
możesz zrobić to, czego szukasz.
Myślę, że łatwiej jest uniknąć opcji -a
$ -a, --archive archive mode; equals -rlptgoD (no -H,-A,-X)
i ustaw tylko te opcje, które chcesz.
Jeśli podoba Ci się wszystkie opcje, ale nie modyfikacje użytkownika -o , grupa -g , czas -t i uprawnienia -p , możesz odjąć te cztery opcje od ekwiwalentu archiwum.
$ -rlD
Aby usunąć pliki na miejscu, użyj opcji - usuń .
Na twoje pytanie: Myślę jednak, że wszystkie pliki zostaną sprawdzone - rsync nie może przesyłać / sprawdzać tylko plików, które zmieniły się tylko pod względem zawartości.
-l
dotyczy linków, -D
urządzeń (traktowanych tak samo jak --specials
), myślę, że -r
sam wystarczy, jeśli mówimy o treści.
Myślę, że to, czego szukasz, jest opcją
rsync -r --size-only
ze strony podręcznika:
--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.
Jeśli naprawdę chcesz usunąć pliki brakujące w źródłowym katalogu, użyj --delete
Możesz zmusić rsync do ignorowania kontroli w oparciu o czas i rozmiar modu pliku oraz zastosować podejście oparte na chksum z przełącznikiem „-c”.
-c, --checksum skip based on checksum, not mod-time & size
Oznacza to, że musi porównywać cały plik w porcjach (i przesyłać odpowiednie metadane w obie strony między źródłem a miejscem docelowym, aby tak się stało) bez względu na to, czy czas i rozmiar pliku są zgodne, ale przenosi tylko te części, które różnią się między źródłem a miejscem docelowym.
Używanie tego przełącznika w połączeniu z innymi przełącznikami sugerowanymi przez innych powinno ograniczyć to, co zostało skopiowane (tylko kopiowanie tego, co uległo zmianie) i ma zaletę polegającą na sprawdzeniu spójności między źródłem a miejscem docelowym, ALE zajmuje to więcej czasu w zależności od szybkości łącza, ponieważ musi przekartkować fragmenty pliku po obu stronach i porównać).
Poniższe polecenie działałoby idealnie, przetestowałem je na własne wymagania, zajmie to tylko zmianę treści.
rsync -acvzh source/ destination/
>f..T...
co sugeruje, że w miejscu docelowym ustawiane są flagi plików i czas modyfikacji, co staram się unikać.