Utilisation de rsync pour sauvegarder

13

Je sauvegarde actuellement le contenu d'un disque dur externe A en (1) supprimant tout sur le disque dur externe de destination B et (2) copiant tout de A vers B (dans le Finder). Le disque dur externe ne contient que des «données de base» (dossiers, images, vidéos, documents, etc.), rien d'extraordinaire / bizarre.

Mais avec tous les outils gratuits incroyables qui existent, je n'ai pas pu trouver un bon outil à sauvegarder (suggestions acceptées).

Je veux automatiser cela. Après quelques recherches, il semble que je puisse l'utiliser rsync. Je veux ensuite automatiser cela en utilisant rsyncpour éviter de copier des fichiers qui sont déjà sur le disque dur de destination (bien sûr, si une modification a été apportée, je veux mettre à jour le fichier / dossier; la même chose avec les fichiers / dossiers supprimés ou les nouveaux fichiers / dossiers; l'idée est d'imiter ce que je fais habituellement manuellement avec le Finder).

Je suis arrivé à ce point

rsync -av --progress --delete /Volumes/A/ /Volumes/B

Maintenant, le journal est plein de fichiers dont le nom commence par .ou ._ou même ._.. Sont-ils nécessaires?

Question

Comment puis-je copier uniquement les fichiers qui comptent, en laissant tous ceux qui ne comptent pas derrière. Par exemple, si je l'ai, photo.pngje m'attendrais à copier photo.png, pas ._photo.pngou beaucoup de fichiers.

Quoi --excludeou --exclude-frompeut être utilisé en toute sécurité sur un Mac? Une bonne règle est de «copier tout ce que le Finder montre», ce que je copierais si je passais manuellement dans tous les dossiers.

 Question supplémentaire

C'est -av --progress --deleteassez? Suis-je en train de commettre un crime ou de risquer certaines données? Quelles options utiliseriez-vous?

S'il vous plaît, soutenez votre réponse avec quelques arguments, je l'apprécierais.

Je cherche un moyen d'automatiser rsyncqui semble assez puissant et gratuit à utiliser.

Manuel
la source
Les commentaires ne sont pas pour une discussion approfondie; cette conversation a été déplacée vers le chat .
bmike
Concernant la stratégie décrite au 1er paragraphe, que se passe-t-il si après (1) - tout supprimer en B - un problème grave arrive à A? Vous pourriez perdre l'accès aux données sur A et sur sa sauvegarde précédente. Si votre espace de stockage de sauvegarde dispose de suffisamment d'espace, que diriez-vous de supprimer la sauvegarde uniquement après qu'une sauvegarde plus récente s'est terminée avec succès?
Ricardo
1
Le lien de @ bmike vers la conversation qui a été déplacée vers le chat est rompu.
Merchako

Réponses:

17

Pour une sécurité maximale, copiez tout

L' option la plus sûre est de tout copier , y compris les fichiers de métadonnées invisibles.

Les fichiers ont tendance à exister pour une raison et à mesure que le logiciel change, il en sera de même de l'existence, de l'objectif et du contenu de ces fichiers de métadonnées. Tout copier réduira le fardeau de la maintenance et vous donnera la certitude que rien ne se perd.

Le fichier journal créé par rsyncsera techniquement impliqué par la nature même d' rsyncun outil en ligne de commande. Pensez à présenter une sortie ordonnée, filtrée par métadonnées et peut-être même codée en couleur pour que l'utilisateur puisse la vérifier. Vous pouvez le faire avec un large éventail d'outils et de langages de script. Veuillez poser plus de questions ici sur Ask Different et sur StackOverflow si vous avez besoin d'aide avec cette approche.

Supprimer les dernières ressources et copier les ressources OS X

En ce qui concerne les rsyncindicateurs, jetez un œil à la question sur le moyen le plus rapide et le plus sûr de copier des données massives d'un disque externe vers un autre . Dans cette question, quelques indicateurs supplémentaires sont utilisés et expliqués:

sudo rsync -vaE --progress --delete-after /Volumes/SourceName /Volumes/DestinationName

Dans cette situation, le Es'assurera que les fourchettes de ressources et autres propriétés spécifiques à Mac sont copiées.

Vous voudrez peut-être --delete-afteréviter de supprimer jusqu'à ce que la copie soit terminée; veuillez noter que cette approche nécessitera potentiellement un lecteur de destination deux fois la taille de la source.

Exclusions possibles

Une réponse à une question connexe, Comment puis-je omettre les fichiers de rendu FCPX d'une sauvegarde Time Machine? , fournit un lien utile vers les fichiers et dossiers OS X qui peuvent être exclus de la plupart des sauvegardes . Ce lien fournit une liste pratique de modèles de fichiers, de dossiers et de chemins d'accès que vous pouvez exclure.

Inclure les fichiers à points

Il existe de bonnes raisons de sauvegarder des fichiers commençant par des points, .*des fichiers correspondants.

Certains logiciels conservent les préférences, les paramètres et d'autres informations de valeur dans des dossiers en haut du dossier de l'utilisateur dans des dossiers préfixés par des points invisibles. L'exécution ls -la ~/révélera ces dossiers et fichiers.

Si un utilisateur utilise ou possède un logiciel qui à son tour utilise un logiciel de contrôle de version, assurez-vous de sauvegarder les fichiers de points. Des logiciels comme subversion et git stockent tous deux des informations critiques dans leurs dossiers de points. Ces dossiers cachés peuvent être dispersés dans votre système de fichiers, où qu'un projet soit extrait.

Projecteur et accès au disque

Spotlight est le service de recherche d'OS X. Spotlight utilise le mdworkerprocessus pour indexer et mettre à jour le catalogue de recherche. Si vous êtes préoccupé par une possible corruption du disque ou des copies lentes, la désactivationmdworker pendant l'exécution rsyncpeut vous aider. Personnellement, je laisse Spotlight en cours d'exécution lors de grands rsynctransferts.

Graham Miln
la source
3
L'option la plus sûre est de tout copier, y compris les fichiers de métadonnées invisibles. Mais ce même lien de Carbon Copy Cloner dit qu'il y a certains fichiers qui sont automatiquement créés de sorte qu'il peut même les corrompre si vous les copiez rsync.
Manuel
1
Vous pouvez ajouter un exemple complet pour les futurs lecteurs. J'ai trouvé deux sources, une et deux (plus la troisième que vous avez liée); Je les laisse ici pour référence future.
Manuel
1
"Il y a de bonnes raisons de sauvegarder des fichiers commençant par des points": oui! Ces fichiers sont cachés (du Finder pour les nuls) mais la plupart du temps ce sont des fichiers très importants.
dan
1
Le Eet --delete-aftersont les points clés qui font de cette réponse une réponse gagnante.
dan
1
@danielAzuelos À partir de -E, dans les versions plus récentes, il y a -Xce que je vois recommandé à certains endroits, lequel est le bon? Ou les deux? Je voudrais un pseudo-complet à jour qui couvre la plupart des inquiétudes générales. La copie de fichiers Spotlight serait-elle plus simple et plus rapide que leur création? Comment puis-je arrêter Spotlight pour ne pas gâcher entre-temps? Qu'en caffeinateest-il du processus? Ou peut-être que si c'est juste une liste de sauvegarde, il n'est pas indexable par Spotlight, encore moins de soucis, etc. Beaucoup de ces questions ont été résolues à coup sûr.
Manuel
5

Si vous utilisez la rsyncversion 3.0.6 selon Carbon Copy Cloner ou 3.1.2 selon Homebrew, vous pouvez vous inspirer des arguments de Carbon Copy Cloner:

rsync -A -X -H -p --fileflags --force-change -l -N -rtx --protect-decmpfs --numeric-ids -go --delete-during --backup --backup-dir=</PATH/TO/STICK/BACKUP_when_using_delete> --protect-args <SRC>/ <DEST>

ylluminate
la source
--protect-decmpfsn'est plus disponible à partir de 3.1.3, voir github.com/Homebrew/homebrew-core/pull/23415 .
user74686
4

Je déconseille l'élagage des métadonnées pendant une sauvegarde, en particulier les fichiers dot._$filename , par exemple , cependant si vous voulez vraiment exclure les fichiers dot de votre rsynccommande, ajoutez- --exclude '.*'y.

rsync -av --exclude '.*' --progress --delete /Volumes/A/ /Volumes/B
user3439894
la source
C'est bon. Je ne savais pas si la suppression de tous les fichiers dot serait problématique (au fait, y a-t-il une différence entre '.*'et '/.*'?). Je ne pense pas que le Finder les copie tous, peut-être simplement certains associés. Dans ce cas, je préférerais exclure uniquement ceux qui sont inutiles (par exemple, .DS_Store). Et oui, ceux qui pourraient être importants, mais que je ne veux pas avoir dans mon journal, je peux les filtrer avec des expressions régulières.
Manuel
1
Ce que le Finder copie n'est pas documenté, et c'est la source du problème de tout le monde lors de la création d'une stratégie de sauvegarde. Vous devez conserver une copie de tous les fichiers si vous voulez une sauvegarde qui pourrait être utilisée exactement à la place du Adisque.
dan
@danielAzuelos Ce qui n'est pas le cas, au cas où le disque dur principal A mourrait, alors j'achèterai un troisième disque dur C, copierai du disque dur B vers le disque dur C et commencerai probablement à utiliser un de B ou C. Je le répète, que ce n'est pas le type de sauvegarde que l'on doit utiliser comme ce que fait SuperDuper. C'est juste que mes photos sont meilleures à deux endroits au lieu d'un seul.
Manuel
4

Je ne suis pas complètement satisfait des réponses actuelles, mais je vais essayer de couvrir ici un peu des possibilités que j'ai vues sur le Web en essayant de trouver une bonne configuration pour rsync.

Et, au fait, si quelqu'un s'intéresse à Time Machine comme les copies, il y en a rsnapshot. Et il y a aussi Unison pour les syncronisations bidirectionnelles. De plus, il existe en fait quelques interfaces graphiques, comme l' utilitaire de sauvegarde et arRsync ; pas exactement ce que je cherchais, mais ils pourraient faire le travail pour quelqu'un.

Tout d'abord, ma seule intention était de dupliquer des photos et des vidéos, donc une copie exacte n'était pas nécessaire, donc pas besoin de trop s'en soucier . En fait, la plupart de mes doutes étaient de savoir si je pouvais tout exclure (la même chose se produirait si, par exemple, je téléchargeais une photo sur Internet, je téléchargeais simplement un fichier .png, tout le reste n'était pas téléchargé mais généré automatiquement ).

Voici une liste non structurée de réflexions que vous voudrez peut-être prendre en compte

  • Si vous souhaitez vous assurer que votre ordinateur portable ne se met pas en veille, vous souhaiterez peut-être caffeinatele processus caffeinate -s rsync -av .... Pris d' ici .

  • Si vous faites des copies locales, comme dans mon cas, ou même si la connexion Internet n'est pas trop lente, vous ne devez pas utiliser l' -zoption (compression), et utiliser -W(transférer le fichier entier, plutôt que les transferts delta; c'est une valeur par défaut lorsque local) et probablement utiliser --inplacepour effectuer des transferts rapides. Pris d' ici .

  • Vous pouvez l'utiliser --delete-afterpour que tout fichier soit d'abord transféré, puis déplacé sur la destination (et supprimé l'original) et soit plus sûr que la suppression avant le transfert ou pendant le transfert.

  • Vous pouvez arrêter le transfert en appuyant sur ctrl + C, et il s'arrêtera proprement. Pris d' ici . C'était l'une de mes craintes avec SuperDuper !, si vous devez arrêter un transfert, vous obtenez le message "Vous laisserez le disque dur dans un état inconnu ...".

  • Dans les versions récentes, il y a --info=progress2encore plus de détails -v.

  • Il y a -P(ce qui équivaut à --partialet --progress) qui laissera les fichiers transférés à mi-chemin afin que vous puissiez continuer lorsque vous redémarrez le processus (si pour une raison quelconque, vous ne pouvez pas mettre fin à la synchronisation immédiatement).

  • Il peut être intéressant d'arrêter Spotlight ou TimeMachine avant de faire la copie et de les réactiver après le transfert. Et même désactiver Spotlight pour le disque externe.

  • D' autres options utilisées dans toutes ces références comprennent -x(ou --one-file-system), -E( --executability), -H( --hard-links), -X( --xattrs), -A( --acls), et --sparse, --hfs-compression, --protect-decmpfs. Vous voudrez peut-être les regarder.

Pour moi, une commande de base ressemble (je pourrais utiliser plus d'options, mais cela suffit pour un exemple):

caffeinate -s rsync -av --delete-after --progress --stats --exclude-from 'excludefile.txt' \
  "/Volumes/SrcHDD/" "/Volumes/DstHDD" # note the trailing slash / after the source

Maintenant, dans mon cas, je pourrais simplement inclure {*.jpg,*.png,*.mp4,*.txt,*.pdf,…}et personne ne dirait "vous avez également besoin de fichiers système" mais comme je ne veux pas rechercher pour obtenir tous les types de fichiers possibles dont j'ai des fichiers, je préfère exclure. Et il y a des choses qui non seulement peuvent être mais semblent commodes à exclure.

J'ai trouvé quelques liens, prenez ce que vous voulez:

  1. https://bombich.com/kb/ccc4/some-files-and-folders-are-automatically-excluded-from-backup-task

  2. https://gist.github.com/tvwerkhoven/4541989

  3. https://github.com/necolas/dotfiles

  4. https://gist.github.com/shkm/5531679

  5. http://www.hackurmac.com/2014/08/backing-up-and-restoring-your-hackintosh.html

  6. https://github.com/jedda/Counterpart

  7. http://alanwsmith.com/rsync-exclude-list-for-mac-osx

Et à partir de là, vous pourriez probablement obtenir ce qui est sûr ou raisonnable à ignorer. Voici la liste complète (je viens de supprimer les doublons)

.HFS+ Private Directory Data*
/.journal
/.journal_info_block
.AppleDouble
.AppleDB
/lost+found

.metadata_never_index
.metadata_never_index_unless_rootfs
/.com.apple.timemachine.donotpresent
.VolumeIcon.icns
/System/Library/CoreServices/.disk_label*
/TheVolumeSettingsFolder

.DocumentRevisions-V100*
.Spotlight-V100
/.fseventsd
/.hotfiles.btree
/private/var/db/systemstats

/private/var/db/dyld/dyld_*
/System/Library/Caches/com.apple.bootstamps/*
/System/Library/Caches/com.apple.corestorage/*
/System/Library/Caches/com.apple.kext.caches/*

/.com.apple.NetBootX

/Volumes/*
/dev/*
/automount/*
/Network/*
/.vol/*
/net

/private/var/folders/zz/*
/private/var/vm/*
/private/tmp/*
/cores/*

.Trash
.Trashes

/Backups.backupdb
/.MobileBackups
/.MobileBackups.trash
/.MobileBackups.trash

Library/Mobile Documents.*
.webtmp

/Library/Caches/CrashPlan
/PGPWDE01
/PGPWDE02
/.bzvol
/Library/Application Support/Comodo/AntiVirus/Quarantine
/private/var/spool/qmaster
$Recycle.Bin
Saved Application State
Library/Preferences/ByHost/com.apple.loginwindow*

.AppleDesktop
.com.apple.timemachine.supported
Network Trash Folder
/Library/Caches/*
/private/var/spool/postfix/*
$RECYCLE.BIN
/stuff/*
/afs/*
/private/var/run/*
/Previous Systems.localized
/tmp/*
.dbfseventsd
.DS_Store
.PKInstallSandboxManager
.SymAV*
.symSchedScanLockxz
.TemporaryItems
Desktop DB
Desktop DF
hiberfil.sys
pagefile.sys
Recycled
RECYCLER
System Volume Information
Temporary Items
Thumbs.db
AUTORUN.INF
Autorun.inf
autorun.inf
Manuel
la source
3

J'ai utilisé rsync pour les sauvegardes à plusieurs travaux, et je l'utilise à la maison.

Je le recommande fortement, mais avec quelques modifications. En tant qu'outil de sauvegarde, c'est génial, mais en tant qu'outil d'archivage, il tombe un peu à plat. Oui, il copie tout, mais vous n'obtenez pas de versions de tout, vous obtenez toujours les dernières versions uniquement.

J'ai utilisé ce guide http://www.mikerubel.org/computers/rsync_snapshots/ comme point de départ. Lisez la page entière. Il explique très bien les options et décrit comment vous pouvez implémenter des sauvegardes incrémentielles. Et étonnamment, l'article a plus de 10 ans mais est toujours applicable aujourd'hui. Je dois aimer Unix.

sevis127
la source
1
Merci. En tout cas, je voulais couvrir les considérations spéciales que l'on pourrait vouloir prendre sous Mac OS X. Je ne voulais pas vraiment juste un guide rsync. Dans tous les cas, bon lien, il couvre beaucoup de rsyncmais il est aussi aujourd'hui un outil pour faire exactement cela: rsnapshot.
Manuel