Comment copier un volume Mac en utilisant cp?

13

J'ai fait des recherches sur cela pendant des heures. En mode mono-utilisateur, j'ai utilisé:

cp -Rpvn /* /Volumes/MyBackup

Mon USB externe est monté sur /Volumes/MyBackup

Le problème est cependant qu'après 24 heures, il n'a toujours pas cessé de copier 300 Go de données sur un lecteur USB externe. Je pense qu'il y a des problèmes avec les liens symboliques tels que le /Volumes/MacHDvolume aussi /Volumes/MacHDet /Volumes/MyBackupje n'en suis pas sûr cependant.

Comment copier un volume Mac en utilisant cp? cp -Rpvn /* /Volumes/MyBackup est- il correct?

ermSO
la source
2
Vous utilisez cp comme ceci, mais ce n'est pas l'outil correct pour le travail. Vous avez besoin de rsync pour cela.
CousinCocaine
1
Avez-vous la possibilité d'exécuter votre mac en mode disque cible? Ou peut-être simplement sortir la HD?
CousinCocaine
Je ne peux pas faire de mode cible car je n'ai pas de deuxième Mac. J'espérais une option moins risquée que de retirer le lecteur.
ermSO
rsync est probablement votre meilleure option ici, bien que je pense que vous pouvez également utiliser ddpour faire une copie octet par octet du disque dur de votre Mac.
thibmaek
1
ddest la voie à suivre pour les sauvegardes secteur par secteur, ce qui semble être ce que vous faites ici (mais soyez très prudent avec cela, pour vous assurer que la chose que vous écrasez est bien celle que vous souhaitez écraser). rsyncest la voie à suivre pour effectuer des opérations de copie complexes ou volumineuses. cpest idéal pour les fichiers individuels, mais n'est pas bon pour les opérations à grande échelle.
cpast

Réponses:

25

Utilisez rsyncà cet effet car cpne peut pas reproduire fidèlement tous les fichiers qui existent sur OS X. Les avantages de rsyncplus dittoet cpsont:

  • les transferts interrompus peuvent redémarrer facilement à très peu de frais.
  • redémarre même reprendre à mi-chemin dans un fichier volumineux.
  • L'exclusion de fichiers et --dry-run permettent des tests faciles et un amincissement itératif.

La façon la plus simple d'utiliser rsyncet de conserver la plupart des choses (autorisations, liens symboliques, dates de modification, etc.) consiste à utiliser l' indicateur -aou --archivepour archiver. Pour voir vos progrès, utilisez -Pou--progress

Rsync fonctionne comme:

rsync options source destination

Dans votre cas, je recommanderais ce qui suit:

rsync --archive --verbose --one-file-system --human-readable --progress /from/ /to

Ou en bref:

rsync -avxhP /from/ /to

Attention au manque de barre oblique de fin à l' /toemplacement.

voir les commentaires pour des indicateurs plus utiles

CousinCocaine
la source
6
Vous voulez également l'indicateur -x, pour éviter de traverser vers des disques montés qui ne sont pas sur le même volume.
Kent
bravo à bmike pour avoir rendu ce post beaucoup plus lisible.
CousinCocaine
2
-Pest en fait équivalent aux deux --progresset --partialcombiné. Voir la page de manuel .
kirb
1
Je sauterais --compress(ce n'est utile que pour les transferts réseau) et j'ajouterais -E(conserver les attributs étendus et les fourchettes de ressources).
Gordon Davisson
5

Si vous souhaitez faire une copie fidèle du contenu du système de fichiers, évitez d'utiliser cp. À la place, utilisez la ditto(1)commande, qui préserve les liens durs, les autorisations de fichiers, les fourchettes de ressources et les métadonnées HFS. Contrairement à cp, dittoest destiné à conserver autant d'informations que possible par défaut.

C'est juste une question de course .sudo ditto src dest

200_success
la source
Corrigez-moi si je me trompe, mais je suis quasiment sûr qu'il a cpété mis à jour pour copier les métadonnées du fichier en 10.4.
NobodyNada
C'était, mais dittoc'est toujours une meilleure option.
juandesant
1
Et rsyncc'est la meilleure option.
CousinCocaine
2

Vous avez oublié de faire une liste de fichiers d'exclusion et copiez probablement des choses qui ne peuvent / ne devraient pas être copiées, y compris des fichiers sans fond comme / dev / random.

Bien que cp puisse faire le travail, il existe de meilleurs outils. Rsync en est un, Carbon Copy Cloner ou SuperDuper en est un autre. Pour utiliser une analogie de cuisine, vous utilisez un couteau pour ouvrir une boîte. Rsync est un ouvre-boîte, Carbon Copy Cloner est un ouvre-boîte électrique. J'utilise rsync régulièrement, mais les paramètres nécessaires pour copier un système d'exploitation en cours d'exécution sont suffisamment complexes, je n'ai jamais pris la peine de tout faire moi-même.

 cp -Rpvn /* /Volumes/MyBackup 

Il semble que tout ce que vous voulez faire, c'est faire une sauvegarde. Votre Mac inclut expressément Time Machine à cet effet. Ouvrez les Préférences Système -> Time Machine, choisissez le disque externe, allumez-le puis laissez-le tranquille. Cela fonctionne très bien et nécessite moins d'une minute de votre temps.

Paul
la source
Je ne parviens pas à accéder à une interface graphique. Tout ce que je peux faire, c'est travailler en mode mono-utilisateur, donc le temps CCC, le superduper et la machine à remonter le temps ne sont pas des options. Quels paramètres utiliseriez-vous avec rsync? Idéalement, je voudrais une copie de démarrage. Je n'ai pas pu faire travailler asr.
ermSO
1
@ermSO Comme vous avez évidemment un disque externe, installez un nouveau système d'exploitation sur le disque dur externe puis démarrez-le. Tous les Mac actuels peuvent démarrer à partir de Firewire ou USB. Vous pouvez ensuite effectuer une sauvegarde décente de vos fichiers utilisateur, puis réparer votre disque dur interne. Je fais généralement un effacement complet dans ces cas, éliminant tout problème de répertoire résiduel.
paul
ddeffectuera des copies secteur par secteur sur la ligne de commande, et est un bon choix pour copier un volume entier sur un autre volume entier tout en effaçant le deuxième volume entier.
cpast
Êtes-vous sûr de vouloir l' -Roption? Cela signifie que si vous avez des liens symboliques vers un seul dossier à plusieurs endroits, vous dupliquerez du contenu. Cela pourrait expliquer le temps que cela prend. Si vous utilisez à la dittoplace, vous obtiendrez ce que vous voulez avec les paramètres par défaut.
juandesant
1
@juandesant c'est sa commande, pas la mienne. je n'utiliserais pas du tout cp.
paul
0

Vous pouvez créer une sauvegarde Time Machine Time à partir de la ligne de commande avec tmutill'utilitaire Time Machine. Vous pouvez définir une destination puis commander une sauvegarde manuelle.

Pour définir le volume de sauvegarde Time Machine:

sudo tmutil setdestination / Volumes / MyBackup

Lancez ensuite la sauvegarde:

tmutil startbackup --auto

Le --autodrapeau essaiera de le traiter comme une sauvegarde planifiée à temps ordinaire.

Une fois que vous avez votre sauvegarde Time Machine, vous pouvez ensuite réinstaller OS X sur votre Mac, puis importer tous vos fichiers à partir de la sauvegarde Time Machine.

CyberSkull
la source