Eu tenho que fazer backup do meu disco rígido. Eu quero usar dd
e colocar a imagem em um disco rígido externo.
- Posso fazer isso usando
dd
o sistema operacional que reside no próprio disco rígido ou preciso inicializar a partir de outro dispositivo, por exemplo, um LiveCD? - É seguro, em geral, tirar a imagem de um dispositivo, se o dispositivo estiver montado e funcionando?
- E se o dispositivo estiver montado, mas tenho certeza de que não há outra operação de E / S enquanto
dd
estiver em execução?
Tenho certeza de que rsync
é a melhor ferramenta para backups, especialmente os incrementais.
Mas estou interessado dd
, porque quero fazer backup de outros dispositivos de armazenamento e copiar também os dados armazenados em espaço não particionado. Por exemplo, meu leitor de e-book usa um espaço não particionado para armazenar uboot, kernel e outros dados.
backup
dd
disk-image
Marco Sulla
fonte
fonte
Respostas:
Em geral, não é seguro. O FS pressupõe que as operações sejam gravadas em determinada ordem para que ele possa gravar novos dados do arquivo e fazer um ponteiro para ele a partir de outros dados, os detalhes exatos dependem do sistema de arquivos. Imagine se o seguinte acontecer:
dd
lê do local X que contém lixo ou alguns dadosdd
lê do local X + 1 link para o local XDo ponto de vista do backup, você obtém dados de lixo. No entanto, existem várias maneiras de solucionar isso:
xfs_freeze
seja um e não conheço outro - mas essa opção existe pelo menos em teoria)Como última observação -
dd
pode não ser a melhor maneira de fazer backup. Ele copia um disco completo, que geralmente é um desperdício quando você copia o 'lixo' também. Se você precisar ter imagens de disco, algo como partimage pode ser melhor. Se você não tem uma opção melhor, use rsync, tar no modo diferencial / incremental etc. ou um sistema de backup completo, como bacula , tarsnap ou um dos muitos outros. A desduplicação de dados pode fazer maravilhas no tamanho dos backups.fonte
Depende para o que exatamente serve a partição e qual é o objetivo da cópia. No entanto, direi que, em geral,
dd
é uma ferramenta inadequada para fazer backup de sistemas de arquivos . Não foi para isso que ele foi planejado.Vai perder muito tempo copiando seções vazias da partição.
Pode levar a inconsistências se o sistema de arquivos estiver montado no momento, em parte porque é uma entidade no nível do SO e pode estar fora de sincronia com o dispositivo de bloco subjacente. Ligar
sync
inicialmente não ajudará muito com isso, pois o processo não é instantâneo.Use
cp -a
ou emrsync
vez disso. Você precisará criar a partição de destino, é claro, para que não seja tão fácil, mas é muito mais seguro e flexível. Se você precisar criar uma imagem do sistema de arquivos , veja abaixo.Se você pretende copiar o sistema de arquivos raiz, absolutamente não o utilize
dd
. Você deve usar algo comorsync -ax
(oucp -ax
em diretórios individuais de nível superior), porque há várias coisas que NÃO devem estar na cópia . No Linux, isso inclui:Algumas delas são realmente interfaces de kernel e não diretórios reais no disco. Se você copiá-los, estará copiando um monte de informações que não serão aplicadas na cópia; se você tentar executar um sistema com ele, isso representará apenas espaço desperdiçado, pois a interface real será montada no topo. Outros contêm informações temporárias em uso pela execução de processos e esses são mais um problema, pois o sistema não poderá resolver o lixo se você o copiar.
Se você deseja criar um arquivo de imagem do sistema de arquivos raiz (ou qualquer sistema de arquivos), crie um arquivo de imagem vazio - este é um uso apropriado para
dd
:Essa é uma imagem de 1024 MB (1000000 * 1024). Ajuste
count
se você quiser outro tamanho. Crie, por exemplo, umext
sistema de arquivos no arquivo :Ele avisará que este não é um dispositivo de bloco real. Continuar. Agora monte o arquivo de imagem:
/mnt/img
deve existir, mas poderia qualquer coisa. Agora você podersync
(oucp -a
) entrar/mnt/img
. O conteúdo permanecerá dentrowhatever.img
quando você o desmontar.Contudo...
Só para esclarecer, use o método de imagem do sistema de arquivos descrito acima apenas se você precisar absolutamente de um arquivo de imagem por qualquer motivo. Se seu objetivo é copiar a partição para outro disco rígido, você não precisa de uma imagem : crie uma nova partição com um sistema de arquivos vazio nessa unidade, monte-a e copie nela. Você pode simplesmente colocar o conteúdo do sistema de arquivos em um diretório vazio e arquivá-lo:
Você pode implantar isso em uma partição existente (vazia ou não), colocando-a no nível superior e usando:
Cuidado que substituirá os arquivos existentes se seus caminhos corresponderem a algo no arquivo morto. Caso contrário, deixará a hierarquia de diretórios existente a mesma.
fonte
cp
quanto o rsync têm a opção-x
de evitar recursão em outros sistemas de arquivos. A resposta de Maciej explica melhor por quedd
é absolutamente inapropriado aqui (é quase garantido que você produza uma cópia inutilizável, a menos que você tome as precauções listadas por Mark , devido às gravações que ocorrerão durante a cópia).dd
não copiará coisas que não são diretórios reais no disco, por isso não sei de onde vem o seu primeiro ponto. Por exemplo, dispositivos montados/mnt
, nós dentro/proc
, etc. não fazem parte dos dados que sãodd
capturados, pois não estão no disco. Para sistemas de arquivos não montados,dd
é perfeitamente válido; você acaba com uma duplicata exata. A única razão pela qual é inadequado para sistemas de arquivos montados é que os dados no sistema podem mudar / ser parcialmente gravados durante o longo período de tempo necessáriodd
para operar.O rsync é a ferramenta escolhida para fazer backup de um sistema de arquivos e pode fazer um backup inicializável do sistema operacional em execução atual.
Algumas advertências:
Algumas vantagens do rsync sobre outros métodos como o tar:
Os backups de imagem têm seu lugar, mas copiam a unidade exatamente como estão, incluindo quaisquer problemas que você possa ter. Um backup de arquivo cria um diretório novo e tem o efeito colateral de linearizar (desfragmentar) sua unidade no processo. Se você quiser fazer 10 cópias idênticas do seu sistema operacional atual, eu usaria o rsync para o mestre de cópias e depois o dd (ou similar) para o resto.
fonte
Depende do que você quer dizer com "sistema de trabalho atual". Se você simplesmente deseja evitar o uso de um disco de inicialização e não se preocupa com a interrupção dos serviços em execução no computador, é possível:
sync
mount -o ro /
./etc/mtab
; ignore).Eu uso esse método para criar um arquivo de um computador do qual acabei de atualizar e não espero usar muito mais. Não é um método muito bom para um sistema em uso ativo: é lento (demorando horas ou dias), os backups são enormes (portanto, você não pode manter mais do que alguns) e é incrivelmente perturbador o uso do sistema que está sendo suportado acima. Para backups diários, recomendo algo que funcione no nível do sistema de arquivos, como
rsnapshot
.fonte
/etc/mtab
a/proc/self/mount
- que funcionará mesmo quando você tiver coisas como chroots ou namespaces fs.mount -o remount,ro /
pode ser gravada. Mas, quando esse comando retornar, em que situação ocorreriam gravações subsequentes?Use Clonezilla , a sério. É o melhor utilitário do tipo Norton Ghost, de código aberto, baseado em Linux. Ele fará a clonagem de partição e de disco completo, sistema de disco para disco ou disco para arquivo (salvar como um arquivo). Ele suporta a maioria dos sistemas de arquivos Linux, NTFS, FAT32 e muito mais. Ele pode salvar em um disco interno, uma unidade externa ou mesmo através da rede em compartilhamentos SMB ou NFS.
É muito fácil de usar e economiza muito tempo.
Editar: para responder à pergunta, não, não é possível a
dd
maioria dos sistemas de arquivos enquanto eles estão montados, pois corre o risco de acabar com uma cópia inconsistente do sistema de arquivos, pois a leitura de um dispositivo de bloco não é atômica. Por exemplo, se você estiver copiando 100 blocos, o sistema pode ter atualizado o primeiro e o último bloco enquanto você estava na metade, o que significa que sua cópia incluirá o último bloco modificado, mas não o primeiro.fonte