Myślę, że można korzystać z -no-
opcji rsync
, aby nie kopiować własności lub uprawnień plików synchronizując jesteś.
Fragment strony podręcznika rsync
--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).
Własność i uprawnienia
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 ....
Znaczniki czasu
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.
Aktualizacja
W przypadku znaczników czasu --no-times
możesz zrobić to, czego szukasz.
>f..T...
co sugeruje, że w miejscu docelowym ustawiane są flagi plików i czas modyfikacji, co staram się unikać.Myślę, że łatwiej jest uniknąć opcji -a
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.
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.
źródło
-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ą
ze strony podręcznika:
Jeśli naprawdę chcesz usunąć pliki brakujące w źródłowym katalogu, użyj
--delete
źródło
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”.
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ć).
źródło
Poniższe polecenie działałoby idealnie, przetestowałem je na własne wymagania, zajmie to tylko zmianę treści.
źródło