Comment déplacer Linux vers une autre partition?

9

J'ai besoin de faire une copie d'un système Linux fonctionnel qui (étant contenu dans /, et le nouvel emplacement est préparé dans / mnt / sdb5) semble contenir une quantité considérable de liens durs, doux et spéciaux dans / dev; serait cpiogérer ce travail sans appliquer la magie supplémentaire?

Garanties actuellement connues:

  • ne va pas supprimer / modifier le système en cours d'exécution jusqu'au moment où la copie est considérée comme amorçable et avec laquelle travailler root=/dev/sdb5; avant la suppression, effectuez une sauvegarde complète de la partition.
  • utilisera cpio pour archiver chaque répertoire racine séparément, donc le décompressera de l'environnement LiveCD afin que la partition du donneur ne soit pas endommagée

Mais encore, ne va pas perdre de temps juste parce que cpio a raté un indicateur et a paralysé les autorisations / type de nœud / soft ou hardlink.

Quel outil utiliser / quelles roches sous-marines éviter?

kagali-san
la source
@warren, merci. va faire un autre test cpio-vs-tar maintenant;)
kagali-san
pas de soucis: j'espère que ça aide :)
warren

Réponses:

10

Pour répondre à la question réelle concernant cpio: Ce sont les drapeaux que j'utiliserais pour cpio:

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

Bien sûr, puisque vous ne copiez pas sur le réseau, j'utiliserais simplement cp:

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

Et si vous voulez pouvoir faire la copie plusieurs fois, rsyncc'est un meilleur choix pour ses capacités de reprise. (Il cpgère également les listes de contrôle d'accès et les attributs étendus et peut éventuellement fonctionner sur le réseau comme cpio. C'est donc l'option la plus utile, sauf pour faire la première copie localement, ce que je préfère faire en utilisant cp.)

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

N'oubliez pas de copier /bootet /dev!

/bootest facile, il suffit de le copier. Mais /devc'est beaucoup plus délicat de nos jours car il est caché par udev. Je recommande la procédure suivante:

  1. mkdir /tmp/dev
  2. mount --move /dev /tmp/dev
  3. Copiez /devvers à l' /mnt/sdb5aide de l'une des commandes ci-dessus
  4. mount --move /tmp/dev /dev
  5. rmdir /tmp/dev
Teddy
la source
6

Comme @Klox l'a mentionné, lors de la copie de partitions de la même taille, j'accepte d'utiliser dd.

Mais quand vous voulez copier un disque sur une partition différente avec une taille différente, je préfère y aller rsync. Montez la nouvelle partition (disons, / mnt / new) et:

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

Pas de magie supplémentaire pour les liens symboliques et pas besoin de cd live (utilisateur unique / init 1 fera très bien l'affaire).

Torian
la source
Ahh, oui. J'utilise rsynctout le temps et j'ai raté l'évidence. J'aime ddpour les raisons que j'ai indiquées, mais rsyncest mieux adapté aux besoins du PO.
Klox
3

La variante la plus optimale ddconsiste à utiliser partimage, il copiera uniquement la section utilisée de la partition, ce qui rendra plus pratique la copie de grandes partitions inutilisées.

Notez la mise en garde importante:

Partimage ne prend PAS en charge Ext4, qui est la valeur par défaut sur les nouvelles installations Ubuntu.

Une copie pratique est incluse dans la distribution du CD System Rescue .

Steve-o
la source
2

Lorsque je déplace des installations Linux entre des disques durs, je démarre toujours à partir d'un Live CD et j'utilise ddpour copier la partition entière. Je reconnais que cela ne traite pas des changements de taille de disque (inévitablement le nouveau disque est plus gros, ce qui simplifie les choses), mais j'aime la technique pour exactement les raisons pour lesquelles vous êtes préoccupé par l'utilisation cpio: quelque chose peut mal tourner. En utilisant la ddtechnique, c'est tout ou rien: soit le nouveau disque démarre et tout est pareil, soit le disque ne démarre pas. Il n'y a aucun risque de problèmes cachés plus tard.

Maintenant, bien sûr, il y a le problème de la partition qui ne remplit pas le nouveau disque, mais je préfère simplement créer une nouvelle partition pour remplir l'espace supplémentaire et compter sur des liens symboliques pour déplacer les répertoires. (Je suis sûr qu'il existe également des outils pour redimensionner les partitions, mais je ne les ai pas utilisés.)

Klox
la source
Le système dont je parle a environ 50 concerts gratuits sur une partition XFS de 500 Go (qui ne peut pas être réduite, actuellement seule la croissance est prise en charge via xfs_grow), et la partition racine est également XFS; pire encore, c'est un Gentoo bien établi qui est presque cette graisse elle-même. Pire encore, le déplacement doit être effectué sans ajouter plus de stockage et ne peut actuellement pas sauvegarder plus de 60 concerts - donc aucune opération de partition. Besoin de mettre Win 'sur cette machine pour tester des trucs.
kagali-san
aussi, dd est sympa, mais pour les opérations lecteur / partition j'ai tendance à utiliser plus .. des solutions propriétaires. Acronis TrueImage semble mieux fonctionner (compression, partages samba - depuis livecd / liveusb flash).
kagali-san