Existe uma maneira melhor do que o cp para copiar milhões de arquivos, preservando os hard links?

5

Então em esta história sobre o GNU coreutils ML, alguém usou o cp para copiar 430 milhões de arquivos e precisava preservar os hard links, e apenas conseguiu terminar após 10 dias.

O grande problema era que, para preservar links físicos, o cp precisava manter uma lista de arquivos já copiados, que ocupavam 17GB de memória no final e faziam o sistema se debater na troca.

Existe alguma utilidade que teria lidado melhor com a tarefa?

    
por Michael Borgwardt 12.09.2014 / 11:26

2 respostas

1

Se as soluções tar ou rsync falharem e se o diretório for a raiz de um sistema de arquivos, você poderá usar os antigos utilitários dump/restore backup (sim, que os stills funcionam).

dump duplica as características do sistema de arquivos sem passar pela interface do sistema de arquivos do kernel, então é bastante rápido.

O inconveniente é que dump é sensível a modificações feitas no sistema de arquivos de origem durante a cópia. Portanto, desmonte melhor o sistema de arquivos ou remonte-o somente para leitura ou pare qualquer aplicativo que possa acessá-lo antes de iniciar uma cópia. Se você respeitar essa condição, a cópia é confiável.

Dependendo do tipo de sistema de arquivos, o nome do comando dump pode mudar, por exemplo, você pode ter o xfsdump para o XFS.

O seguinte comando é semelhante ao exemplo tar :

dump 0uf - /dev/sdaX  | (cd /target && restore rf -)

O número é o nível de cópia incremental; 0 indica para fazer uma cópia completa.

    
por 12.09.2014 / 15:47
0

Eu lembro que o rsync resultou em alguns problemas para mim; Eu não tenho certeza se estes eram hard links ou arquivos de dispositivos ou qualquer outra coisa. Desde então eu uso

tar -cv $(ls) | ( cd /mnt; tar xv )

que copia todos os arquivos de. para / mnt. Minha história inteira pode ser encontrada aqui: link

    
por 12.09.2014 / 13:23