Como mover o Linux para outra partição?

9

Eu preciso fazer uma cópia de um sistema linux funcional, que (estando contido em / e o novo local seja preparado em / mnt / sdb5) pareça conter uma quantidade considerável de hard-, soft-links e arquivos especiais em / dev; lidaria cpiocom esse trabalho sem aplicar magia adicional?

Salvaguardas atualmente conhecidas:

  • não remover / modificar o sistema em execução até o momento em que a cópia for considerada inicializável e com a qual trabalhar root=/dev/sdb5; Antes de remover, faça um backup completo da partição.
  • usará o cpio para arquivar cada diretório raiz separadamente, descompactando-o do ambiente LiveCD, para que a partição doadora não seja prejudicada

Mas ainda assim, não perderá tempo apenas porque o cpio perdeu algum sinalizador e danificou as permissões / tipo de nó / soft ou hardlink.

Qual ferramenta usar / quais rochas subaquáticas evitar?

kagali-san
fonte
@warren, obrigado. vai fazer outro teste cpio-vs-tar agora;)
kagali-san
sem preocupações: Espero que ajude :)
Warren

Respostas:

10

Para responder à pergunta real sobre cpio: Estas são as bandeiras para as quais eu usaria cpio:

find / -xdev -depth \! -path ./lost+found -print0 | cpio --pass-through --null --dot --make-directories --unconditional --preserve-modification-time --sparse /mnt/sdb5

Claro, como você não está copiando pela rede, eu usaria cp:

cp --archive --sparse=always --verbose --one-file-system --target-directory=/mnt/sdb5 /

E se você quiser fazer a cópia várias vezes, rsyncé uma escolha melhor para seus recursos de retomada. (Ele também cplida com ACLs e atributos estendidos e, opcionalmente, pode trabalhar através da rede cpio. Portanto, é a opção mais útil, exceto para fazer a primeira cópia localmente, que eu prefiro usar cp.)

rsync --archive --inplace --hard-links --acls --xattrs --devices --specials --one-file-system --8-bit-output --human-readable --progress / /mnt/sdb5

Não esqueça de copiar /boote /dev!

/booté fácil, basta copiá-lo. Mas /devé muito mais complicado hoje em dia, uma vez que está oculto udev. Eu recomendo o seguinte procedimento:

  1. mkdir /tmp/dev
  2. mount --move /dev /tmp/dev
  3. Copie /devpara /mnt/sdb5usando um dos comandos acima
  4. mount --move /tmp/dev /dev
  5. rmdir /tmp/dev
Urso de pelúcia
fonte
6

Como o @Klox mencionou, ao copiar partições do mesmo tamanho, concordo em usá-lo dd.

Mas quando você deseja copiar um disco para uma partição diferente com tamanho diferente, prefiro continuar rsync. Monte a nova partição (digamos, / mnt / new) e:

# rsync -a --exclude=/proc --exclude=/dev --exclude=/sys / /mnt/new

Nenhuma mágica adicional para links simbólicos e não há necessidade de live cd (usuário único / init 1 funcionará perfeitamente).

Torian
fonte
Ah sim. Eu uso rsynco tempo todo e perdi o óbvio. Gosto ddpelas razões expostas, mas rsyncé mais adequado às necessidades do OP.
Klox
3

A variante mais ideal de dduso é partimage, ela copiará apenas a seção usada da partição, tornando mais fácil a cópia de grandes partições não utilizadas.

Observe a ressalva importante:

O Partimage NÃO suporta Ext4, que é o padrão nas novas instalações do Ubuntu.

Uma cópia conveniente está incluída na distribuição do CD do System Rescue .

Steve-o
fonte
2

Ao mover instalações do Linux entre discos rígidos, sempre inicializo a partir de um Live CD e uso ddpara copiar toda a partição. Reconheço que isso não lida com alterações no tamanho do disco (inevitavelmente, o novo disco é maior, o que simplifica as coisas), mas eu gosto da técnica exatamente pelos motivos pelos quais você se preocupa em usar cpio: algo pode dar errado. Usando a ddtécnica, é tudo ou nada: o novo disco é inicializado e tudo é igual, ou o disco não é inicializado. Não há risco de surgir problemas à espreita mais tarde.

Agora, é claro, há o problema da partição não preencher o novo disco, mas prefiro criar uma nova partição para preencher o espaço extra e contar com links simbólicos para mover os diretórios. (Tenho certeza de que também existem ferramentas para redimensionar partições, mas não as usei.)

Klox
fonte
O sistema de que falo tem apenas cerca de 50 GB de espaço livre na partição XFS de 500 gb (que não pode ser reduzida, atualmente apenas o suporte é suportado xfs_grow), e a partição raiz também é XFS; Pior ainda, é um Gentoo bem estabelecido, que é quase a mesma gordura. Pior ainda, a mudança deve ser feita sem adicionar mais armazenamento e, atualmente, não é possível fazer backup de mais de 60 GB - portanto, nenhuma operação de partição. Precisa colocar o Win 'nessa máquina para testar algumas coisas.
kagali-san
Além disso, o dd é bom, mas para operações de unidade / partição eu costumo usar mais .. soluções proprietárias. O Acronis TrueImage parece funcionar melhor (compactação, compartilhamentos de samba - do livecd / liveusb flash).
kagali-san