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.
Trecho da página de manual do 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).
Propriedade e permissões
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 ....
Timestamps
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.
Atualizar
Para registros de data e hora, --no-times
faça o que você está procurando.
>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.Eu acho que é mais fácil evitar a opção -a
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.
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.
fonte
-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
na página do manual:
Se você realmente deseja excluir arquivos ausentes no diretório de origem, use
--delete
fonte
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".
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).
fonte
O comando abaixo funcionaria perfeitamente, eu testei para o meu próprio requisito, será necessário apenas a alteração do conteúdo.
fonte