Existe diferença entre o hardlinking com cp -l ou ln?

12

Estou implementando um esquema de backup usando rsync e hardlinks. Eu sei que posso usar o link-dest com o rsync para fazer os hardlinks, mas eu vi mencionar o uso de "cp -l" antes do "link-dest" ser implementado no rsync. Outro método de hardlinking que eu conheço é "ln".

Então, a minha pergunta é, por curiosidade: existe uma diferença na criação de hardlinks usando "cp -l" em comparação com o uso de "ln"?

    
por twan163 09.08.2014 / 09:18

2 respostas

14

Os resultados de ambos devem ser os mesmos, pois um link físico é criado para o arquivo original.

A diferença está no uso pretendido e, portanto, nas opções disponíveis para cada comando. Por exemplo, cp pode usar a recursão, enquanto ln não pode:

cp -lr <src> <target>

criará links físicos em <target> para todos os arquivos em <src> . (cria novos diretórios; não links) O resultado será que a estrutura da árvore de diretórios em <target> será idêntica à em <src> . Ele será diferente de cp -r <src> <target> em que usar o último copiará cada arquivo e pasta e dará a cada um um novo inode , enquanto o primeiro apenas usa links físicos em arquivos e, portanto, simplesmente aumenta sua Links count.

Quando usado para copiar um único arquivo, como no seu exemplo, os resultados serão idênticos.

    
por 09.08.2014 / 10:16
0

link usa menos chamadas do sistema, seguido por ln e finalmente cp :

$ strace link f.txt g.txt | wc --lines
282

$ strace ln --symbolic f.txt g.txt | wc --lines
311

$ strace ln f.txt g.txt | wc --lines
334

$ strace cp --symbolic f.txt g.txt | wc --lines
394

$ strace cp --link f.txt g.txt | wc --lines
410
    
por 19.04.2016 / 02:54

Tags