Definitivamente, há maneiras "melhores" de fazer isso, mas a maneira como você faz isso depende dos recursos disponíveis. Vou listar algumas maneiras diferentes e você pode decidir o que funciona melhor para você.
Para começar, copiar dados em / home para um tarball é inútil. Você não pode salvá-lo localmente, o que significa que, para isso, será necessário um servidor remoto para o qual você possa enviar os dados. De preferência, um servidor na mesma rede que este computador, acessível via SSH. Francamente, fazer tarballs das outras partições e colocá-las em / home é uma perda de tempo.
Se você deseja duplicar este servidor, o que eu faria é usar dd
para criar uma imagem de / dev / sda e enviar os dados por SSH para outro servidor. As duas melhores maneiras de fazer isso são ou imaginar outro disco rígido ao mesmo tempo ou salvar a imagem como um arquivo.
dd if=/dev/sda bs=4096 conv=notrunc,noerror,sync | ssh user@machine "dd of=/dev/sdX"
Isso clonará toda a unidade, incluindo o MBR (e, portanto, o carregador de inicialização), todas as partições, UUIDs e dados, enviando-os por SSH para outra máquina e gerando imagens de uma unidade de sua escolha. As opções sugeridas por mim fazem o seguinte:
- notrunc ou 'não truncar' mantém a integridade dos dados instruindo dd não truncar nenhum dado.
- noerror instrui o dd para continuar a operação, ignorando todos os erros de leitura. O comportamento padrão do dd é parar em qualquer erro.
- a sincronização grava zeros para erros de leitura, portanto, os deslocamentos de dados permanecem sincronizados.
- bs = 4096 define o tamanho do bloco para 4k, um tamanho ideal para o disco rígido eficiência de leitura / gravação e, portanto, velocidade de clonagem.
Para que isso funcione, o usuário que você usa faz login com o SSH como raiz ou parte do grupo disk
. / dev / sdaX deve ser o modo 660, dando acesso de leitura / escrita em grupo. O proprietário do grupo padrão deve ser disk
.
Como alternativa, você pode criar uma imagem que possa ser usada para gravar diretamente no disco.
dd if=/dev/sda bs=4096 conv=notrunc,noerror,sync | ssh user@machine "dd of=/path/to/wherever/server.img"
Para gravar a imagem em um disco rígido do computador em que ela está salva, você pode usar o seguinte comando.
dd if=/path/to/server.img bs=4096 conv=notrunc,noerror,sync of=/dev/sdX
Por último, se o espaço é uma preocupação, você pode compactar a imagem antes de enviá-la pelo SSH.
dd if=/dev/hda conv=sync,noerror bs=4096 | gzip -c | ssh user@machine "of=/path/to/wherever/server.img.gz"
e escrevendo por
gunzip -c /path/to/server.img.gz | dd of=/dev/sdX
Por último, se você quiser extrair arquivos individuais da imagem sem gravá-los em outra unidade, poderá montá-los. No entanto, isso não funcionará se estiver compactado.
Você precisará fdisk -lu /path/to/server.img
para obter o deslocamento das partições individuais. Depois de fazer isso, você precisa do setor inicial da partição que deseja montar. Por uma questão de argumento, digamos que a partição que queremos acessar começa no setor 122441728.
$ fdisk -lu server.img
Disk server.img: 320.1 GB, 320072933376 bytes
255 heads, 63 sectors/track, 38913 cylinders, total 625142448 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x86308630
Device Boot Start End Blocks Id System
/dev/sda1 * 63 114441469 57220703+ 83 Linux
/dev/sda2 114442240 122441727 3999744 82 Linux swap / Solaris
/dev/sda3 122441728 625141759 251350016 83 Linux
Você usaria então mount -o ro,loop,offset=$((122441728 * 512)) server.img /mnt
para montar a terceira partição em / mnt.
Fontes: