Como clonar partição com comando dd?

Iniciado por ubu4ever, 05 de Junho de 2013, 11:09

tópico anterior - próximo tópico

ubu4ever

Prezados,

Como o projeto Remastersys foi descontinuado, e como não sei fazer a remasterização do sistema via linha de comando resolvi usar uma solução mais simples, clonar a partição com o sistema.

Citarsudo fdisk -l
[sudo] password for ****:

Disco /dev/sda: 500.1 GB, 500107862016 bytes
255 cabeças, 63 setores/trilhas, 60801 cilindros, total de 976773168 setores
Unidades = setores de 1 * 512 = 512 bytes
Tamanho do setor (lógico/físico): 512 bytes / 512 bytes
Tamanho da E/S (mínimo/ideal): 512 bytes / 512 bytes
Identificador do disco: 0xbfdc9333

Dispositivo Boot Início Fim Blocos Id Sistema
/dev/sda1   *        2048    20972751    10485352   83  Linux
/dev/sda2        20973568   527984639   253505536   83  Linux
/dev/sda3       527984640   532187135     2101248   82  Linux swap / Solaris
/dev/sda4       532189182   976771071   222290945    5  Estendida
/dev/sda5       532189184   976771071   222290944   83  Linux

Citardf -h
Sist. Arq.      Tam. Usado Disp. Uso% Montado em
/dev/sda1       9,8G  3,9G  5,4G  43% /
none            4,0K     0  4,0K   0% /sys/fs/cgroup
udev            864M  4,0K  864M   1% /dev
tmpfs           175M  1,1M  174M   1% /run
none            5,0M     0  5,0M   0% /run/lock
none            872M   84K  872M   1% /run/shm
none            100M   16K  100M   1% /run/user
/dev/sda5       209G  149G   50G  76% /media/backup
/dev/sda2       238G   19G  208G   9% /home

No meu caso o comando seria dar o boot em modo recovery como root e usar:

Citardd if=/dev/sda1 of=sistema.iso

Assim posso transferir a iso para um HD Externo. Não será uma iso Linux, mas terei o backup do meu sistema e quando quiser restaurar, basta restaurar usando o comando dd novamente.

Dúvidas:
- Quando quiser restaurar precisarei reinstalar o Grub? Alguém já fez isso?
- O tamanho da iso será o tamanho exato da partição sda1, 10GB; ou o espaço usado, 3,9 GB?
- Usando o dd if=/dev/sda of=sistema.iso eu faria o backup de todas as partições? sda1, sda2, sda3, etc...


irtigor

- Se você copiar a parte correspondente a mbr, e nada mudar, não.
- É, do tamanho da partição, você está copiando todos os blocos.
- Sim.

selvaking

Camarada!

há muito tempo deixei de usar o dd pra isto. Prefiro montar a partição em outro ponto de montagem e copiar os arquivos mantendo os atributos. Se precisar compactar e guardar, uso o tar zipado(tgz).
Pra recuperar o sistema é mais tranquilo!
mais exige conhecido de médio para avançado de quem tá fazendo o backup.
Se vc quiser. Posso fazer um pequeno tutorial que se vc conseguir entender todos os pontos e pegar a manha. Vc nunca mais fica na mão!
Dê-me um computador com o Tux que movo o mundo!

Linux User #323049

ubu4ever

#3
Posta o link de onde posso conseguir um tutorial de como usar o tar para isso.

EDIT:

Encontrei: https://help.ubuntu.com/community/BackupYourSystem/TAR

selvaking

Muito bom o artigo.

A técnica que uso tem uns aspectos mais poderosos que esta.

Tipo: Não copio diretamente da raiz, pois se o sistema tá carregado, alguns arquivos e diretórios que só existem em memória pode para o backup se vc não fizer a exclusão deles na hora de copiar.

Crio dois novos diretórios em /media como por exemplo ORIGEM e DESTINO

Monto a partição que vou clonar em ORIGEM e monto a outra como DESTINO.

Estando no mesmo micro. É cópia direta.

cp -rap /media/ORIGEM/* /media/DESTINO/

Com isto vc pode mover/clonar distros entre partições, entre HD's e sofisticando a técnica com SSH, entre micros em rede.

Ou se quiser pode jogar num arquivo backup. E falando em rede, vc pode jogar entre máquina real e máquina virtual.

Fiz vários backup funcionais de máquinas reais para virtuais.
Dê-me um computador com o Tux que movo o mundo!

Linux User #323049

ubu4ever

#5
Legal você ter feito a sugestão do TAR!

EDIÇÃO 1:

Citação de: selvaking online 05 de Junho de 2013, 22:49
Tipo: Não copio diretamente da raiz, pois se o sistema tá carregado, alguns arquivos e diretórios que só existem em memória pode para o backup se vc não fizer a exclusão deles na hora de copiar.

O argumento --one-file-system já faz isso! Outras partições, mídias externas, drives virtuais, etc... são eliminados da cópia.

Vou economizar tempo e espaço em disco. Fiz um backup aqui com dd e o arquivo ficou com 4,4 GB (zipado). O backup com TAR ficou com apenas 1,5 GB. Isso porque usei gzip para agilizar. Se usasse bzip2 teria ficado menor mas demoraria bem mais e não sei se valeria a pena o tempo perdido x tamanho ganho.

EDIÇÃO 2:

Arquivo de log com o arqumento --one-file-system:

Citartar: /proc/: arquivo está em outro sistema de arquivos; não será arquivado
tar: /home/: arquivo está em outro sistema de arquivos; não será arquivado
tar: /dev/: arquivo está em outro sistema de arquivos; não será arquivado
tar: /run/: arquivo está em outro sistema de arquivos; não será arquivado
tar: /sys/: arquivo está em outro sistema de arquivos; não será arquivado
tar: /media/backup/: arquivo está em outro sistema de arquivos; não será arquivado

Eu uso partição /home separada e partição de backup em media. Nenhuma delas foi inserida no backup.

A vantagem de usar esse argumento ao invés de --exclude=/mnt por exemplo é que você não precisa criar o diretório depois (mkdir /mnt), pois o comando grava a pasta vazia no arquivo tar.

EDIÇÃO 3

O argumento --one-file-system não funciona para drives removíveis. Quando montei um pendrive ele foi incluído no backup. Tive que mesclar os dois métodos:

Citartar -cvpzf backup.tar.gz --exclude=backup.tar.gz --exclude=/media --exclude=/mnt --exclude=/proc --exclude=/dev --exclude=/sys --exclude=/run --exclude=/lost+found --one-file-system /