Eu tenho um sistema de arquivos para um dispositivo que estou programando do qual gostaria de fazer uma cópia exata. Idealmente, gostaria que essa cópia fosse idêntica à pasta da qual foi copiada. Eu tentei usar cp -r
cp -a
e rsync -azvP
tentar conseguir isso. Cada um deles resulta em uma pasta com tamanho diferente (usando du -s
) e, finalmente, mesmo que meu dispositivo fique sem a pasta original, ele não ficará com a pasta que copiei.
- O que está ficando de fora de que os comandos que eu usei não são responsáveis?
- É possível manter tudo idêntico ao copiar um sistema / pasta de arquivos? Se sim, como eu faria isso?
PS: Eu postei perguntas semelhantes no StackOverflow, mas rapidamente percebi que havia feito isso na troca errada
Editar: Isso pode não ser útil, mas não importa qual método eu usei o diretório copiado sempre causa a máquina em questão no Kernel Panic com a seguinte saída.
VFS: Não é possível montar o root fs via NFS, tentando o disquete. VFS: Não é possível abrir o dispositivo raiz "nfs" ou bloco desconhecido (2,0). Anexe uma opção correta de inicialização "root ="; 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?) 1f08 50304 mtdblock8 (driver?) 0800
8388608 driver sda: sd Pânico do kernel - não sincronizando: VFS: Não é possível montar o root fs no bloco desconhecido (2,0)
fonte
du
saída não é um indicador de que o conteúdo não seja o mesmo.rsync -a
oucp -a
faça cópias exatas dos diretórios, mas você está tentando copiar um disco inicializável, há mais algumas coisas que você precisa fazer para concluir isso.dd if=/some/location of=/some/other/location bs=4M
ler e gravar dados como está.Respostas:
Eu geralmente uso uma das seguintes alternativas:
rsync -aHAX
(adicione v para verbosidade) assegura que você preserva qualquer estrutura de link e x-attrs na pasta de destino durante a cópia. Não se esqueça,a
significa arquivar e preservar tempo, propriedade e permissões.tar cvf
(não comprima para economizar tempo, basta tar-los) é o que eu uso se o primeiro não atender ao que eu preciso, por qualquer motivo, e não tiver tempo, mas eu sempre tento o primeiro.Para verificar se tudo correu como deveria, você pode executar
diff -r <folder1> <folder2>
depois, se quiser.fonte
du -s
diferença. Eu costumavarsync -axXSAH
copiar tudo. O -x copiará apenas dentro do sistema de arquivos, e não os arquivos montados em outro sistema de arquivos.Ao ler 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.
Depois de copiar a pasta raiz para o novo sistema, você precisará atualizar o grub antes de inicializar.
fonte
tar c
, entãotar x
ele. O kicker, porém, era garantir que minha máquina estivesse desligada desde que eu a inicializei usando o FS local, mas remota ao dispositivo que eu estava inicializando (eu estava inicializando o dispositivo através do NFS)grub-install: error: embedding is not possible, but this is required for cross-disk install.
Você pode tentar o FSArchiver . É o sucessor da imagem similar, que agora não é mantida. Eu usei o partimage e o FSArchiver no passado, e ambos funcionaram bem. Tanto quanto eu sei, os dois fazem cópias de um sistema de arquivos o mais próximo possível do original. Eu acho que o FSArchiver é um pouco mais poderoso que a partimage. Por exemplo, ele funciona com ext4, enquanto a partimage não. Consulte a tabela de comparação FSArchiver / partimage .
fonte
Usar
du
para comparar pastas é inerentemente problemático. Se você realmente deseja comparar 2 diretórios baseados apenas em seus tamanhos, use odu
seguinte:Essa opção relatará o tamanho real dos diretórios versus a quantidade de espaço em disco que ele consome quando armazenado na mídia da unidade física. Os discos são organizados em blocos e os arquivos são gravados nesses blocos. Se um arquivo precisar apenas de BLOCO + 1 de espaço, ele consumirá 2 BLOCOS de espaço, e é o que
du
normalmente é relatado. Lembre-se de que o nome da ferramenta é uso do disco!Como você está lidando com o que soa como um sistema de arquivos inteiro, eu estaria inclinado a usar
dd
para fazer uma cópia exata da partição em que o diretório estáVocê pode usar isso
boot.img
para restaurar a partição onde quiser.fonte
du -sh /var
masdu -sh --apparent-size /var
dá 209G no meu sistema.Depende um pouco do que você quer dizer com "idêntico".
rsync
seria bom na maioria das vezes. Às vezes, você desejatar
compactar tudo em um arquivo e extraí-lo em outro local.dd
para copiar o próprio sistema de arquivos inteiro.Se você tem algum meio de depurar seu dispositivo, tente descobrir qual é exatamente o problema por que ele não está atualmente funcionando.
fonte