Eu gosto de clonar uma partição inteira ou um disco rígido inteiro em um disco externo maior, mas gosto de criar um arquivo esparso. Costumo usar dd
para clonagem, mas ele não suporta arquivos esparsos. Como solução alternativa, usei algo como:
cp --sparse=always <(dd if=/dev/sda1 bs=8M) /mount/external/backup/sda1.raw
No entanto, isso é um pouco complicado para o meu gosto e não me permite retomar o processo se abortado. É engraçado que exista uma ferramenta NTFS para isso ( ntfsclone
), mas essa ferramenta não existe para os sistemas de arquivos nativos do Linux (EXT2-4).
Existe alguma ferramenta melhor para isso, por exemplo, uma dd
variante com suporte escasso? Não procuro algum software proprietário para backups em disco, mas simplesmente desejo fazer uma cópia esparsa de clone que possa montar como dispositivo de loop, se necessário.
fonte
cp
, nunca me ocorreu que você pudesse copiar esparsamente uma imagem de disco. Eu sempre os comprimia se precisava economizar espaço. Agora, por que isso não é uma resposta em uma pergunta?Respostas:
Você quer
dd_rescue
.fonte
dd_rescue
online, descobri que também existe uma ferramenta diferente chamadaddrescue
(sem o sublinhado) que foi desenvolvida independentemente,dd_rescue
mas parece fazer basicamente o mesmo. Eu apenas mencionei isso aqui como FYI geral.dd_rescue
eddrescue
não são a mesma coisa. Teoricamente, eles fazem o mesmo trabalho, mas geralmente tive mais sorte com o antigo / originaldd_rescue
.-s
e a posição ao comando original. (Então ele ficaria assimdd_rescue -a -b 8M -s 42000k /dev/sda1 /mount/external/backup/sda1.raw
.)Apenas para completar, a chamada para ddrescue . O sinalizador
--sparse
ou-S
permite que o destino seja gravado esparsamente:Ou com opção longa:
Ou se você prefere MiBs :
Para permitir que o resgate seja interrompido e retomado, você também pode usar um arquivo de log:
Note que GNU
ddrescue
edd_rescue
são programas diferentes. Mas o GNUddrescue
parece ser mais difundido. Por exemplo, ele já está empacotado com GRML .fonte
dd if=sda1.raw of=/dev/sdb1
. No entanto, para usar o ddrescue na restauração, basta alterar a origem / destino usado para o resgate para a nova origem / destino, de preferência com um novo arquivo de log. Se possível (geralmente não), é possível usar o ddrescue para copiar dados diretamente do disco de origem defeituoso para um disco de substituição.Houve um patch oferecido em 2007 para fornecer suporte a arquivos esparsos no GNU dd, mas parece que ele não foi convertido em coreutils (pelo menos não no 8.4). Duvido que o dd tenha mudado muito desde então, o patch pode se aplicar à versão atual sem muito trabalho.
Também estou realmente impressionado com o uso criativo de
cp
sua pergunta, e isso me colocou no caminho de usá-lo para realizar a retomada (retomando aqui de ~ 80M na fonte):Edit: arranhar isso. O segundo
dd
, é claro, estaria procurando a posição errada no arquivo de saída, já que não tem o mesmo comprimento que a entrada.fonte
cp
- obrigado!Apenas adicionando meus 2 centavos. Outra maneira de criar um arquivo esparso a partir de um disco bruto é com o qemu-img usando algo como:
Você pode usar isso em uma única partição também. Além disso, você tem a opção de converter o disco / partição bruta para qualquer outro formato que o qemu-img suporte (QCOW2, VHD [x], vmdk, etc)
fonte
Outra opção é rsync . Por exemplo:
Explicação:
-S
/--sparse
para pular blocos esparsos na gravação-P
/--partial --progress
para mostrar progresso e manter arquivos parcialmente transferidos--copy-devices
copiar o conteúdo do dispositivoVocê pode adicionar
--append
para continuar uma cópia interrompida (ou--append-verify
para confirmar a soma de verificação nas correspondências de dados novos e antigos).Edit : Acabei de perceber que o copy-devices.diff está em consideração e pode não estar presente em muitos sistemas (embora esteja incluído no Fedora , Ubuntu , Debian e outros)
fonte
Nota: isso não funciona pelos motivos descritos nos comentários, estou deixando aqui para referência.
Monitore as estatísticas do dd usando kill -USR1:
Continue usando skip / seek:
Sem $ i_bytes, seria mais difícil retomar. Provavelmente, é mais fácil registrar as estatísticas do dd em um arquivo, caso a máquina travar ou algo assim.
fonte
cp
substituirá apenas o arquivo existente, não é? Eu conheço asskip
e outras opções dedd
. A questão é acp
parte.Existem xfsdump e xfsrestore para XFS, que é um sistema de arquivos Linux nativo há bastante tempo.
fonte
Por que não simplesmente:
fonte