137 votes

Copier toute la hiérarchie du système de fichiers d'un lecteur à un autre

Je voudrais copier toute la hiérarchie du système de fichiers d'un lecteur à l'autre, c'est-à-dire le contenu de chaque répertoire ainsi que les fichiers ordinaires sur la plate-forme Linux. Je serais reconnaissant de connaître la meilleure façon de le faire, éventuellement avec les fonctions intégrées de Linux. Le système de fichiers est une famille étendue.

5voto

bezoadam Points 101

Comme mentionné dans les commentaires de juniorRubyist, l'approche préférée ici devrait être d'utiliser dd . La raison principale est la performance, il s'agit d'une copie bloc par bloc au lieu de fichier par fichier.

Cloner une partition

# dd if=/dev/sda1 of=/dev/sdb1 bs=64K conv=noerror,sync status=progress

Cloner un disque entier

# dd if=/dev/sdX of=/dev/sdY bs=64K conv=noerror,sync status=progress

Cloner une partition montée inscriptible

La clé pour cloner une partition qui est montée en lecture-écriture est de la remonter en lecture seule. Ensuite, faites le clonage et enfin remontez-la en lecture-écriture.

# mount -o remount,ro /path/to/mount_point
# dd if=/dev/sda1 of=/dev/sdb1 bs=64K conv=noerror,sync status=progress
# mount -o remount,rw /path/to/mount_point

Note. Cette opération peut avoir des effets secondaires sur les applications en cours. Par exemple, si votre système a des applications qui nécessitent d'écrire sur cette partition particulière exactement quand vous avez besoin de la cloner, ces applications devront être arrêtées pendant que la partition est clonée. Ou si c'est votre propre application, réécrivez-la pour gérer ce scénario.

Cloner un disque avec une ou plusieurs partitions montées et inscriptibles.

La stratégie et les effets secondaires sont les mêmes que pour le Cloner une partition montée inscriptible sauf que cette fois les commandes de remontage sont répétées pour chaque point de montage inscriptible.

# mount -o remount,ro /path/to/writeable_mount_point1
# mount -o remount,ro /path/to/writeable_mount_point..
# mount -o remount,ro /path/to/writeable_mount_pointN
# dd if=/dev/sdX of=/dev/sdY bs=64K conv=noerror,sync status=progress
# mount -o remount,rw /path/to/writeable_mount_point1
# mount -o remount,rw /path/to/writeable_mount_point..
# mount -o remount,rw /path/to/writeable_mount_pointN

Notes finales

La manière préférée et recommandée de cloner un disque/une partition est de le faire sur un système non monté, car cela n'aura pas d'effets secondaires non déterministes. Il en va de même pour les systèmes construits sur le concept de montages en lecture seule.

Références

  1. https://wiki.archlinux.org/index.php/disk_cloning

4voto

Mauro Colella Points 141

rsync

"Cette approche est considérée comme meilleure que le clonage de disque avec dd car elle permet d'utiliser une taille, une table de partition et un système de fichiers différents. de partition et de système de fichiers différents, et meilleure que la copie avec cp -a, car elle car elle permet un meilleur contrôle des autorisations de fichiers, des attributs Control Lists (ACLs) et les attributs étendus."

De :

https://wiki.archlinux.org/index.php/Full_system_backup_with_rsync

Page Homme Ici

2voto

Thawn Points 276

J'ai essayé les commandes rsync proposées ici mais j'ai finalement obtenu des résultats beaucoup plus propres et rapides avec partclone . Démontez les partitions source et cible, puis exécutez ce qui suit :

partclone.ext4 -b -s /dev/sd(source) -o /dev/sd(target)
e2fsck -f /dev/sd(target)
resize2fs /dev/sd(target)

Les étapes suivantes sont réalisées :

  1. Cloner (seulement les parties utilisées de) la partition
  2. s'assurer que le système de fichiers est correct (resize2fs impose cette étape)
  3. redimensionner la partition vers le nouveau système de fichiers

Ce qui précède fonctionne dans le cas où la partition cible est de la même taille ou plus grande que la source. Si votre cible est plus petite que la source (mais contient toutes les données), faites ce qui suit :

e2fsck -f /dev/sd(target)
resize2fs -M /dev/sd(target)
partclone.ext4 -b -s /dev/sd(source) -o /dev/sd(target)
resize2fs /dev/sd(target)

resize2fs -M réduit le système de fichiers à la taille minimale avant de cloner les données.

Notez que partclone n'est pas installé par défaut sur la plupart des systèmes. Utilisez une distro vivante comme clonezilla ou installer partclone à partir du gestionnaire de paquets de votre distros ( apt-get install partclone sur les sytèmes basés sur Debian).

1voto

ECJB Points 21

Dd' est génial, mais ddrescue (apt install gddrescue) est encore mieux. Si dd est interrompu, il n'y a aucun moyen de redémarrer (une autre bonne raison d'utiliser rsync). Lorsque vous utilisez ddrescue avec un fichier journal, il garde la trace des blocs qui ont été copiés.

Lors de la sauvegarde d'un système à double démarrage Windows/Linux, j'utilise ntfsclone pour les partitions Windows et ddrescue pour la partition Linux et dd pour le MBR. (Je n'ai pas essayé de sauvegarder un système à double démarrage utilisant GPT/UEFI).

Ce que j'aimerais voir, c'est un outil ddrescue capable de créer des fichiers comme ntfsclone où l'espace non alloué est marqué par des caractères de contrôle. Cela rend l'image non montable directement, mais lui permet d'être seulement aussi grande que les données contenues.

Quelqu'un doit inventer le "format d'image spécial" ntfsclone pour ddrescue...

0voto

Jürgen Weigert Points 111

rsync est la solution idéale, comme expliqué ci-dessus.

J'ajouterais juste -S à " gérer efficacement les fichiers épars " au cas où il y aurait un volume docker devicemapper ou similaire à copier.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X