Je souhaite copier toute la hiérarchie du système de fichiers d’un lecteur à l’autre ... le contenu de chaque répertoire ainsi que les fichiers ordinaires de la plate-forme Linux. Je serais reconnaissant de connaître le meilleur moyen de le faire avec éventuellement des fonctions intégrées à Linux. Le système de fichiers est une famille ext.
linux
filesystems
Jongleur
la source
la source
dd
?dd if=/dev/sda1 of=/dev/sdb1 bs=4096
conv=notrunc,noerror,sync
.dd
2 raisons: premièrement, c'est une mauvaise idée de faire une copie au niveau du bloc d'un système de fichiers monté (ce qui est le cas de/
) et deuxièmementdd
, ne copiez pas les données des sources montées dans le système de fichiers comme/boot
et/home
.Réponses:
J'utilise souvent
Présumer / mnt est le nouveau disque monté sur / mnt et il n’ya pas d’autre monte sur /.
le -x le garde sur le seul système de fichiers.
Ceci doit bien sûr être fait en tant que root ou en utilisant sudo.
Ce lien a quelques alternatives, y compris celle ci-dessus
http://linuxdocs.org/HOWTOs/mini/Hard-Disk-Upgrade/copy.html
la source
/
, hors -à- dire/dev
,/sys
,/proc
etc. Par conséquent , avant l' émission quecp
je suggère la recherche de meilleures approches (également en utilisant rsync)-x
indicateur par WolfJM signifie que les systèmes de fichiers synthétiques que vous mentionnez ne seront pas copiés.Ce que vous voulez, c'est rsync .
Cette commande peut être utilisée pour synchroniser un dossier et reprendre la copie quand il est abandonné à mi-chemin. La commande pour copier un disque est:
Les options sont:
Pour améliorer la vitesse de copie, ajoutez
-W
(--whole-file
), afin d'éviter de calculer les différences / deltas des fichiers. C'est la valeur par défaut lorsque la source et la destination sont spécifiées en tant que chemins locaux, car l'avantage réel de l'algorithme de transfert delta de rsync est la réduction de l'utilisation du réseau.Pensez également à ajouter
--numeric-ids
pour éviter de mapper les valeurs uid / gid par nom d'utilisateur / groupe.la source
rsync -avxHAWX --numeric-ids --progress / mnt/
mais j'aurais dû le fairersync -avxHAWX --numeric-ids --progress / mnt/ > ~/rsync.out
. Je soupçonne que verser la sortie sur le terminal a ralenti le processus. : D--info=progress2
au lieu de--progress
est utile pour les transferts volumineux, car il donne la progression générale, au lieu de (des millions de lignes pour) des fichiers individuels.X
etA
parE
, car les attributs étendus et les ACL sont couverts parE
mon Mac. Testé:rsync version 2.6.9 protocol version 29
> ~/rsync.out
,2> ~/rsync.err
enregistrera toutes les erreurs dans un fichier séparé./
, notez que ayant une barre oblique (ou non) sur le répertoire source fait une différence:rsync source/ dest/
copie tout à l' intérieursource/
dedest/
, alors que desrsync source dest/
copies du dossiersource
et tout à l' intérieur endest/
.La réponse de Michael Aaron Safyan ne tient pas compte des fichiers fragmentés.
-S
l'option corrige cela.De plus, cette variante ne fait pas de spam avec la progression de chaque fichier et ne fait pas de synchronisation delta qui tue les performances dans les cas autres que ceux liés au réseau.
Parfait pour copier le système de fichiers d'un lecteur local vers un autre lecteur local.
la source
55,431,669,792 57% 97.47MB/s 0:06:56 xfr#2888, ir-chk=5593/8534)
Pour une copie locale unique d'un disque à un autre, je suppose que cp suffit comme décrit par Wolfmann ci-dessus.
Pour les travaux plus importants tels que les sauvegardes locales ou distantes, par exemple, le meilleur est rsync .
Bien sûr, rsync est beaucoup plus complexe à utiliser.
Pourquoi rsync:
Cela vous permet de copier (copie synchronisée) tout ou partie de votre lecteur A sur le lecteur B, avec de nombreuses options, telles que l'exclusion de certains répertoires de la copie (par exemple, l'exclusion de / proc).
Un autre gros avantage est que cet outil natif surveille le transfert de fichier: par exemple, pour les transferts massifs, si la connexion est interrompue, elle continuera à partir du point d'arrêt.
Enfin, rsync utilise la connexion SSH, ce qui vous permet d’atteindre des "copies" sécurisées synchronisées à distance. Jetez un coup d’œil à la page de manuel ainsi qu’ici pour quelques exemples .
la source
Comme Michael Safyan 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 voulez probablement pas copier.Cette version est assez spécifique aux systèmes basés sur Gnome et Debian / Ubuntu, car elle comprend des sous-répertoires des répertoires de base des utilisateurs qui sont spécifiques à Gnome, ainsi que le cache du paquet APT.
La dernière ligne exclura tous les répertoires nommés cache / Cache / .cache, ce qui peut s'avérer trop agressif pour certaines utilisations:
la source
Ajouter deux bits utiles au fil de discussion sur rsync: changer le chiffrement et utiliser
--update
:Selon le post de Wolfman,
cp -ax
est élégant et cool pour les trucs locaux.Cependant,
rsync
c'est génial aussi. En réponse à la réponse de Michael-W
, changer le chiffre peut également accélérer les choses (lisez cependant toutes les implications en matière de sécurité).Il y a des discussions (et des points de repère) autour de l'endroit sur le fait qu'un processeur lent est le véritable goulet d'étranglement, mais cela semble m'aider lorsque la machine est chargée effectuant d'autres tâches simultanées.
L'une des autres grandes raisons d'utiliser rsync dans une copie récursive de cette taille est due à l' option -u (ou à --update ). S'il y a un problème pendant la copie, vous pouvez le réparer, et rsync reprendra le travail là où il s'est arrêté (je ne pense pas que scp dispose de cela). Le faire localement, cp a également un commutateur -u.
(Je ne suis pas sûr de ce que les implications de --update et - whole-file ensemble sont, mais elles semblent toujours fonctionner de manière raisonnable pour moi dans ce type de tâche)
Je réalise que ce n'est pas un sujet sur les fonctionnalités de rsync, mais certaines des plus courantes que j'utilise pour cela sont:
Incidemment, si j’ai besoin d’utiliser Windows, j’utilise rsync de Cygwin pour faire de grandes copies récursives, car l’explorateur a un peu la tête morte depuis le début (bien que Finder soit sous OS X, c’est pire).
la source
rsync
De:
https://wiki.archlinux.org/index.php/Full_system_backup_with_rsync
Man Page Here
la source
Comme mentionné dans les commentaires de juniorRubyist, l’approche à privilégier devrait être ici
dd
. La raison principale est la performance, c'est une copie bloc par bloc au lieu de fichier par fichier.Cloner une partition
Cloner un disque entier
Références
la source
dd
est une très mauvaise idée pour 2 raisons: premièrement, effectuer une copie au niveau du bloc d’un système de fichiers monté (ce qui est le cas pour/
) entraînera plus que probablement des erreurs du système de fichiers cible et, deuxièmementdd
, ne copiera pas les données des sources montées dans le système de fichiers comme/boot
et/home
. Votre lien est valide pour le clonage de disque, pas pour le clonage "hiérarchie de fichiers"'dd' est génial, mais ddrescue (pour installer install gddrescue) est encore meilleur. 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 enregistre les blocs copiés.
Lors de la sauvegarde d'un système Windows / Linux à double démarrage, 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 amorçage à l'aide de GPT / UEFI.)
Ce que j'aimerais voir, c'est un outil ddrescue qui peut 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 aussi gros que les données contenues.
Quelqu'un s'il vous plaît venez avec le "format d'image spécial" ntfsclone pour ddrescue ...
la source
rsync
est la solution parfaite comme expliqué ci-dessus.J'ajouterais simplement
-S
« gérer efficacement les fichiers fragmentés» dans le cas où un volume docker devicemapper ou similaire serait copié.la source
J'ai essayé les commandes rsync proposées ici, mais j'ai finalement obtenu des résultats beaucoup plus propres et plus rapides
partclone
. Démontez les partitions source et cible, puis exécutez les opérations suivantes:Cela effectue les étapes suivantes:
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 s'adapte à toutes les données), procédez comme suit:
resize2fs -M
réduit le système de fichiers à la taille minimale avant de cloner les données.Notez que ce
partclone
n’est pas installé par défaut sur la plupart des systèmes. Utilisez une distribution live comme Clonezilla ou installez partclone à partir de votre gestionnaire de paquets de distribution (apt-get install partclone
sur les systèmes basés sur Debian).la source