Temos um sistema de arquivos: /foo
E temos outro sistema de arquivos: /bar
P:Como posso copiar todos os arquivos de/foo para/bar?
Não temos espaço para compactá-los, apenas para copiá-los. Mas pode haver links simbólicos, hardlinks no sistema de arquivos. Portanto, é necessário preservar estes e o proprietário, permissão, estrutura, arquivos ocultos! Qual é a melhor maneira?
extra: arquivos com caracteres estranhos ou arquivos de blocos/caracteres também
ATUALIZAR: podemos usar gzip com isso? se for necessário copiar via rede, a compactação seria muito útil.
Responder1
Comentário de Ruié quase suficiente; isso deve copiar tudo, incluindo arquivos ocultos:
cd /foo; tar cpf - . | (cd /bar; tar xpvf -)
(correr como root
).
Se quiser compactar os dados copiados entre os dois tar
processos, você poderá adicionar um compressor e um descompressor no pipeline:
cd /foo; tar cpf - . | gzip -9 | (cd /bar; gunzip | tar xpvf -)
Se a sua versão for tar
compatível, você pode usar o z
sinalizador:
cd /foo; tar cpzf - . | (cd /bar; tar xpzvf -)
(O -p
sinalizador está habilitado por padrão root
em algumas plataformas, não tenho certeza sobre o AIX.)
Responder2
Tar - embora muito versátil - não conhece muitos problemas subjacentes relacionados aos dados do inode. Eu recomendo fortemente uma variação de
cd $src; find . | backup -if - | (cd $target; restore -xqf -)
Anos atrás eu trabalhei isso em um 'script bonito' - mas principalmente eu apenas uso o acima na linha de comando.
Para um roteiro bonito (de 2009! Eeks!), Veja:http://www.rootvg.net/content/view/301/309/