Nota
folders on one file system which have been hard linked together
Geralmente, em Unix, diretórios com hardlinking não são compatíveis . Eu suponho que você quer dizer "arquivos em um diretório são hardlinks para arquivos em outro diretório".
mv
behavior
Digamos que você tenha muitos arquivos vinculados uns aos outros, ou seja, muitos caminhos que levam aos mesmos dados armazenados uma vez no sistema de arquivos.
Compare este Unix & Resposta do Linux SE . A parte relevante:
A move between filesystems (it doesn't matter if it's on the same physical medium or not) is handled as a file copy followed by a delete. This is in fact exactly what the mv
command does. Obviously that means that the destination filesystem has to make a new copy of the file.
Depois que uma cópia é feita, mv
remove a fonte da mesma forma que rm
. Isso se aplica:
rm
simply deletes the pointer. If you have multiple pointers to the file (hard links), then deleting one of those pointers with rm
leaves the others completely untouched and the data still available.
Portanto, se você mover poucos arquivos com hardlink para outro sistema de arquivos, outros hardlinks estarão seguros . Os hardlinks não podem cruzar os sistemas de arquivos, portanto, a nova cópia não pode ser um hardlink para qualquer coisa que seja deixada no sistema de arquivos de origem.
Se você mover todos os arquivos com hardlink, todos eles desaparecerão do sistema de arquivos de origem e aparecerão no arquivo de destino. Esteja ciente de que mesmo um único mv
(movendo vários arquivos) criará cada novo arquivo separadamente, eles não serão mais vinculados uns aos outros. Em teoria, mv
poderia realizar algum trabalho adicional para detectar hardlinks e recriá-los no sistema de arquivos de destino, mas isso não acontece (como mostrado em esta outra resposta ).
Movendo hardlinks para obter hardlinks
Existem outras ferramentas que recriam hardlinks, tar
é uma delas (embora eu não saiba se tar
no Mac OS X é certo). Comparar este :
By default, if you tell tar
to archive a file with hard links, and more than one such link is included among the files to be archived, it archives the file only once, and records the second (and any additional names) as hard links. This means that when you extract that archive, the hard links will be restored.
Observe que os hardlinks serão restaurados entre os arquivos restaurados (ou seja, eles imitarão as conexões de hardlink da origem), mas os arquivos restaurados nunca serão re-hardlinkados para arquivos de origem (ou seus hardlinks que ainda existem), mesmo se eles forem extraídos para o mesmo sistema de arquivos tar
os obtiveram.
Para aproveitar o tar
sem criar um arquivo grande, você precisará de alguns truques com o shell. Por exemplo. :
tar -c /source/dirA/ /source/file1 | { cd /foo/destination/ && tar -x; }
O comando executa a cópia sem excluir. Se você precisar excluir a fonte, faça isso com um comando separado eventualmente.