Respostas:
Eu acho que você pode usar as -no-
opções para rsync
a não copiar a propriedade ou permissões dos arquivos que você está 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).
Olhando através da página de manual, acredito que você desejaria usar algo como isto:
$ rsync -avz --no-perms --no-owner --no-group ...
Para excluir arquivos que não existem, você pode usar a --delete
opção:
$ rsync -avz --no-perms --no-owner --no-group --delete ....
Quanto ao carimbo de data / hora, não vejo uma maneira de manter isso sem alterar a forma como você faria a comparação de arquivos SOURCE vs. DEST. Você pode querer dizer rsync
para ignorar os carimbos de data / hora usando esta opção:
-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.
Para registros de data e hora, --no-times
faça o que você está procurando.
Eu acho que é mais fácil evitar a opção -a
$ -a, --archive archive mode; equals -rlptgoD (no -H,-A,-X)
e defina apenas as opções desejadas.
Se você gosta de todas as opções, mas não as modificações do usuário -o , group -g , time -t e Permissions -p , você pode subtrair essas quatro opções do equivalente ao arquivo.
$ -rlD
Para excluir os arquivos no destino, use a opção --delete .
Para sua pergunta: Mas acho que todos os arquivos serão verificados - o rsync não pode transferir / verificar apenas arquivos que foram alterados apenas pelo conteúdo.
-l
é para links, -D
dispositivos (tratados da mesma forma que --specials
), acho que -r
só basta se estamos falando de conteúdo.
Eu acho que o que você está procurando é a opção
rsync -r --size-only
na página do 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.
Se você realmente deseja excluir arquivos ausentes no diretório de origem, use --delete
Você pode forçar o rsync a ignorar as verificações com base no tempo e tamanho do arquivo mod e usar uma abordagem baseada em chksum com a opção "-c".
-c, --checksum skip based on checksum, not mod-time & size
Isso significa que ele precisa comparar o arquivo inteiro em partes (e transferir os metadados relevantes entre a origem e o destino para que isso aconteça), independentemente de a hora e o tamanho do arquivo corresponderem ou não, mas transferirá apenas as partes que diferem entre a origem e o destino.
O uso dessa opção em conjunto com as outras opções sugeridas por outras pessoas deve limitar o que é copiado (apenas copiar o que foi alterado) e tem o benefício de fazer uma verificação de consistência entre a origem e o destino, mas demora mais, dependendo da velocidade do seu link. ele precisa agrupar os blocos de arquivos dos dois lados e comparar).
>f..T...
que sugere que as faixas de arquivo e o tempo de modificação estão sendo definidos no destino, e é isso que estou tentando evitar.