Não tenho certeza se posso explicar isso melhor do que a página de manual do rsync
:
-H, --hard-links This tells rsync to look for hard-linked files in the transfer and link together the corresponding files on the receiving side. Without this option, hard-linked files in the transfer are treated as though they were separate files.
When you are updating a non-empty destination, this option only ensures that files that are hard-linked together on the source are hard-linked together on the destination. It does NOT currently endeavor to break already existing hard links on the destination that do not exist between the source files. Note, however, that if one or more extra-linked files have content changes, they will become unlinked when updated (assuming you are not using the --inplace option).
Note that rsync can only detect hard links between files that are inside the transfer set. If rsync updates a file that has extra hard-link connections to files outside the transfer, that linkage will be broken. If you are tempted to use the --inplace option to avoid this breakage, be very careful that you know how your files are being updated so that you are certain that no unintended changes happen due to lingering hard links (and see the --inplace option for more caveats).
Observe que -a
não implica -H
e, mesmo se você adicionar -H
, o outro lado do link não faz parte da mesma transferência (e não pode ser, porque a estrutura de diretórios adjacente é diferente ) rsync
não vê os dois lados do link ao mesmo tempo e, portanto, não pode atualizar o arquivo vinculado nos dois locais. Ou seja, quando atualiza /Users/bellett/projects/correspondence/letter.txt, ele pode dizer que está vinculado a algo mais (pela contagem de links), mas não tem idéia de onde esse link existe. --inplace
pode resolver o problema, mas também pode causar outros problemas; veja a seção da man page.