Para uma simples transferência de / home para outro disco, eu uso cp -a
isso me parece extremamente lento. Gostaria de saber uma maneira mais eficiente de concluir a tarefa. Tenho / home montado como volume lógico, mas o disco de destino não é um sistema LVM
9
cp
for lento, outros métodos também serão lentos. A menos que não é orientada para o arquivo copiarnoatime
opção de montagem para reduzir gravações desnecessárias, especialmente no sistema de arquivos de origem.Respostas:
Tente
tar
,pax
,cpio
, com algo buffering.Eu sugiro, em
bsdtar
vez de,tar
porque pelo menos em algumas distribuições Linuxtar
é GNU tar que, ao contrário debsdtar
(fromlibarchive
), não trata de preservar atributos estendidos, ACLs ou atributos linux.pv
armazenará em buffer até 500 milhões de dados para acomodar melhor as flutuações nas velocidades de leitura e gravação nos dois sistemas de arquivos (embora, na realidade, você provavelmente tenha um disco mais lento que o outro e o mecanismo de gravação do sistema operacional fará esse buffer como bem, provavelmente não fará muita diferença). As versões mais antigas depv
não suportam-a
(para relatórios de velocidade média), você pode usarpv -B 200M
sozinho lá.Em qualquer caso, esses não terão a limitação de
cp
, que faz as leituras e as gravações sequencialmente. Aqui temos doistar
trabalhando simultaneamente, para que um possa ler um FS enquanto o outro está ocupado esperando o outro FS terminar de escrever.Para ext4 e se você estiver copiando para uma partição que seja pelo menos tão grande quanto a origem, veja também
clone2fs
como funcionantfsclone
, que é copiar apenas os blocos alocados e sequencialmente, portanto, o armazenamento rotativo provavelmente será o mais eficiente.O partclone generaliza isso para alguns sistemas de arquivos diferentes.
Agora, algumas coisas a serem consideradas ao clonar um sistema de arquivos.
A clonagem seria copiar todos os diretórios, arquivos e seu conteúdo ... e tudo mais. Agora, tudo o resto varia de sistema para sistema de arquivos. Mesmo se considerarmos apenas os recursos comuns dos sistemas de arquivos Unix tradicionais, devemos considerar:
Então, se você considerar
ext4
e a maioria dos sistemas de arquivos Linux, terá que considerar:SELinux
)Nem todas as ferramentas suportam todas elas, ou quando o fazem, é necessário ativá-lo explicitamente, como
--sparse
,--acls
... opções dersync
,tar
... E ao copiar para um sistema de arquivos diferente, você deve considerar o caso em que elas não o são. suporta o mesmo conjunto de recursos.Você também pode considerar os atributos do sistema de arquivos, como o UUID, o espaço reservado para raiz, a frequência fsck, o comportamento do diário, o formato dos diretórios ...
Depois, existem sistemas de arquivos mais complexos, nos quais você não pode realmente copiar os dados copiando arquivos. Considere, por exemplo,
zfs
oubtrfs
quando você pode tirar instantâneos de subvolumes e ramificá-los ... Esses teriam suas próprias ferramentas dedicadas para copiar dados.A cópia de byte a byte do dispositivo de bloco (ou pelo menos dos blocos alocados quando possível) geralmente é a mais segura se você deseja certificar-se de copiar tudo. Mas cuidado com o problema de conflito do UUID e isso implica que você está copiando para algo maior (embora você possa redimensionar uma cópia instantânea da fonte antes de copiar).
fonte
--acls
opção de armazenar as ACLs no arquivo morto. E eu ficaria surpreso se um estrangeiro (das sortes) ferramenta comobsdtar
alças melhor do que o (essencialmente) um nativo ...tar
para Linux (star
,bsdtar
,tar
), eu não estou ciente de que GNU tar é melhor do que os outros. A escolha das ferramentas GNU é geralmente mais política do que técnica (veja, por exemplobash
).--acls
Eu recomendo o rsync, por exemplo:
Ou, para transferir com compactação:
fonte
rsync
geralmente é muito mais lento quecp
outar|tar
rsync
é mais eficiente: você já possui parcialmente os dados de origem disponíveis no volume de destino, porque ele transferirá apenas dados ausentes / alterados. Eu não o usaria para uma rápida "primeira cópia".