Eu tenho dois diretórios de backup que vivem no mesmo sistema de arquivos no meu servidor de backup. O primeiro é chamado de "clone" - ele contém um clone do meu laptop que é atualizado remotamente todas as noites via rsync. O segundo é chamado de "backup", que é um instantâneo rsync semanal de apenas as partes importantes do clone. Para economizar espaço, "backup" é criado como links para clonar em vez de copiar, usando --link-dest:
rsync -avum --link-dest=/clone /clone/ /backup
Agora eu também quero usar a opção --backup para copiar as versões antigas dos arquivos alterados do backup para uma área de espera, caso eu precise deles ou, acidentalmente, exclua algo importante. Isso funciona bem sem --link-dest:
rsync -avumb --backup-dir=/holding/2016_10_22 /clone/ /backup
No entanto, isso cria cópias dos arquivos alterados no backup, perdendo espaço - eu quero hard links. Mas se eu adicionar o - link-dest parm de volta em:
rsync -avumb --backup-dir=/holding/2016_10_22 --link-dest=/clone /clone/ /backup
... somente arquivos excluídos são salvos em backup. Arquivos alterados são silenciosamente vinculados. A razão (eu acredito) é que - link-dest compartilha a lógica de - copy-dest. Ou seja, se o arquivo de origem estiver inalterado em relação ao arquivo copy-dest (ou link-dest), ele não será transferido, mas copiado / vinculado do diretório copy / link-dest para o diretório de destino. Como estou usando o diretório de origem como o diretório link-dest, todos os arquivos não excluídos são "inalterados" e tratados de forma silenciosa.
Eu poderia fazer isso em duas etapas: primeiro --backup sem --link-dest, então novamente --link-dest sem --backup. (As versões mais recentes do rsync substituem arquivos idênticos por links físicos). Mas eu realmente prefiro fazer tudo de uma vez.
Existe uma maneira de fazer o backup ao criar links físicos? (Realmente o que eu quero é rsync "regular" com hard link em vez de transferência de arquivos. Meu uso de - link-dest parece um pouco de um hack, dada a lógica pretendida dessa opção.)
Pergunta bônus: a página man parece indicar que o uso de --link-dest apenas em destinos vazios é o preferido:
This option works best when copying into an empty destination hierarchy, as existing files may get their attributes tweaked, and that can affect alternate destination files via hard-links. Also, itemizing of changes can get a bit muddled.
O pouco sobre a especificação de itens ficar "confusa" é um pouco vago. Está usando --link-dest em um alvo não vazio realmente "perigoso", assumindo que eu não me importo muito com atributos de arquivo? Alguém pode dar um exemplo?
Tags rsync