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.

268voto

Steve Points 11

Ce que vous voulez, c'est rsync .

Cette commande peut être utilisée pour synchroniser un dossier, et aussi pour reprendre la copie lorsqu'elle est interrompue à mi-chemin. La commande pour copier un disque est :

rsync -avxHAX --progress / /new-disk/

Les options sont les suivantes :

-a  : all files, with permissions, etc..
-v  : verbose, mention files
-x  : stay on one file system
-H  : preserve hard links (not included with -a)
-A  : preserve ACLs/permissions (not included with -a)
-X  : preserve extended attributes (not included with -a)

Pour améliorer la vitesse de copie, ajoutez -W ( --whole-file ), pour éviter de calculer les deltas/diffs des fichiers. C'est la valeur par défaut lorsque la source et la destination sont spécifiées comme des chemins locaux, puisque le véritable avantage de l'algorithme de transfert delta de rsync est de réduire l'utilisation du réseau.

Pensez également à ajouter --numeric-ids pour éviter de mapper les valeurs uid/gid par nom d'utilisateur/groupe.

111voto

Ilia Sidorenko Points 1211

La réponse de Michael Aaron Safyan ne tient pas compte des fichiers épars. -S corrige ce problème.

De plus, cette variante n'envoie pas de spam avec la progression de chaque fichier et ne fait pas de synchronisation delta, ce qui nuit aux performances dans les cas hors réseau.

Parfait pour copier le système de fichiers d'un lecteur local vers un autre lecteur local.

rsync -axHAWXS --numeric-ids --info=progress2

41voto

NlightNFotis Points 2432

J'utilise souvent

> cp -ax / /mnt

En supposant que /mnt est le nouveau disque monté sur /mnt et qu'il n'y a pas d'autres montages sur /.

le -x le garde sur un seul système de fichiers.

Ceci doit bien sûr être fait en tant que root ou en utilisant sudo.

Ce lien propose quelques alternatives, dont celle ci-dessus.

http://linuxdocs.org/HOWTOs/mini/Hard-Disk-Upgrade/copy.html

8voto

Dan Points 320

Comme Michael Safyan le suggère ci-dessus, j'ai utilisé rsync à cette fin. Je suggère d'utiliser des options supplémentaires pour exclure les répertoires que vous ne souhaitez probablement pas copier.

Cette version est assez spécifique aux systèmes basés sur Gnome et Debian/Ubuntu, car elle inclut les sous-répertoires des répertoires personnels des utilisateurs qui sont spécifiques à Gnome, ainsi que le cache des paquets APT.

La dernière ligne exclura tout nommé cache/Cache/.cache, ce qui peut être trop agressif pour certaines utilisations :

rsync -WavxHAX --delete-excluded --progress \
  /mnt/from/ /mnt/to/
  --exclude='/home/*/.gvfs' \
  --exclude='/home/*/.local/share/Trash' \
  --exclude='/var/run/*' \
  --exclude='/var/lock/*' \
  --exclude='/lib/modules/*/volatile/.mounted' \
  --exclude='/var/cache/apt/archives/*' \
  --exclude='/home/*/.mozilla/firefox/*/Cache' \
  --exclude='/home/*/.cache/chromium'
  --exclude='home/*/.thumbnails' \
  --exclude=.cache --exclude Cache --exclude cache

6voto

hornetbzz Points 211

Pour une copie locale unique d'un disque à l'autre, je suppose que cp suffit comme décrit par Wolfmann ci-dessus.

Pour les travaux plus importants, comme les sauvegardes locales ou à distance, par exemple, le meilleur est rsync .

Bien entendu, rsync est nettement plus complexe à utiliser.

Pourquoi rsync :

  • cela vous permet de copier (synchronisé synchronisée) tout ou partie de votre lecteur A vers lecteur B, avec de nombreuses options, comme exclure certains répertoires de la copie (par exemple exclure /proc).

  • Un autre grand avantage est que cette outil natif surveille le transfert de transfert : par exemple pour les transferts massifs, si la connexion est interrompue, il continuera à partir du point de rupture.

  • Et enfin, mais pas des moindres, rsync utilise connexion ssh, ce qui vous permet de de réaliser des "copies" sécurisées synchronisées à distance "synchronisées et sécurisées. Jetez un coup d'oeil à la homme page ainsi que ici pour quelques exemples .

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