Como um sistema de arquivos pode ser copiado exatamente como está?

Como um sistema de arquivos pode ser copiado exatamente como está?

Tenho um sistema de arquivos para um dispositivo que estou programando e do qual gostaria de fazer uma cópia exata. Idealmente, gostaria que esta cópia fosse idêntica à pasta de onde foi copiada. Eu tentei usar cp -r cp -ae rsync -azvPtentar conseguir isso. Cada um deles resulta em uma pasta com tamanho diferente (usando du -s) e, em última análise, mesmo que meu dispositivo fique fora da pasta original, ele não sairá daquela que copiei.

  • O que está sendo deixado de fora e os comandos que usei não estão sendo considerados?
  • É possível manter tudo idêntico ao copiar um sistema/pasta de arquivos? Se sim, como eu faria isso?

PS Eu postei perguntas semelhantes emStackOverflowmas rapidamente percebi que havia perguntado na exchange errada


Editar: Isso pode não ser útil, mas não importa qual método eu use, o diretório copiado sempre faz com que a máquina em questão entre em Kernel Panic com a seguinte saída.

VFS: Não é possível montar o root fs via NFS, tentando disquete. VFS: Não é possível abrir o dispositivo raiz "nfs" ou bloco desconhecido(2,0) Anexe uma opção de inicialização "root=" correta; aqui estão as partições disponíveis: 1f00
64 mtdblock0 (driver?) 1f02 64 mtdblock2 (driver?) 1f04 2432 mtdblock4 (driver?) 1f05 128 mtdblock5 (driver?) 1f06 4352 mtdblock6 (driver?) 1f07 204928 mtdblock7 (driver?) 50304 mtdblock8 (driver?) 0800
8388608 driver sda: sd Kernel panic - não sincronizando: VFS: Não é possível montar root fs em bloco desconhecido (2,0)

Responder1

Geralmente uso uma das seguintes alternativas:

  • rsync -aHAX(adicionar v para verbosidade) garante que você preserve qualquer estrutura de link e x-attrs na pasta de destino durante a cópia. Não se esqueça de asignifica arquivar e já preservar tempo, propriedade e permissões.
  • Simples tar cvf(não compactar para economizar tempo, apenas tartar) é o que eu uso se o primeiro não atende o que preciso por algum motivo e não tenho tempo, mas sempre tento o primeiro.

Para verificar se tudo correu como deveria, você pode executar diff -r <folder1> <folder2>depois, se quiser.

Responder2

Lendo sua resposta nos comentários, parece que você está tentando copiar a pasta raiz ("Meu dispositivo não inicializa usando o diretório copiado"). Nesse caso, há várias coisas que você deve fazer.

$ cd /
$ mkdir backups

$ tar -cvpf /backups/fullbackup.tar --directory=/ --exclude=proc --exclude=sys \
     --exclude=dev/pts --exclude=backups .

Depois de copiar a pasta raiz para o novo sistema, você precisará atualizar o grub antes de inicializar.

$ grub-install --recheck /dev/sdX (Where X is the partition number)
$ update-grub

Responder3

Você poderia tentarFSArchiver. É o sucessor da partimage semelhante, que agora não tem manutenção. Eu usei o partimage e o FSArchiver no passado e ambos funcionaram bem. Pelo que eu sei, ambos fazem cópias de um sistema de arquivos o mais próximo possível do original. Acho que o FSArchiver é um pouco mais poderoso que o partimage. Por exemplo, funciona com ext4, enquanto partimage não. Vera tabela de comparação FSArchiver/partimage.

Responder4

Depende um pouco do que você entende por "idêntico".

  • Apenas fazer rsyncseria bom na maioria das vezes. Às vezes você quer tarcompactar tudo em um arquivo e extraí-lo em outro lugar.
  • Se você quiser um clone do sistema de arquivos completo, poderá ddcopiar todo o sistema de arquivos.

Se você tiver algum meio de depurar seu dispositivo, tente descobrir qual é exatamente o problema por que ele não funciona no momento.

informação relacionada