Utilisation de Rsync pour sauvegarder sur un disque externe

17

J'achète un disque dur externe pour sauvegarder les ordinateurs de ma maison (enfin !!). J'espère utiliser rsync. J'ai vu un exemple qui fait (ou semble faire) exactement ce que je veux. Quelque chose comme ça:

rsync -aE --delete /path/to/what/I/want/to/backup /Volumes/FW200/Backups

Cependant, en regardant la documentation et les exemples de rsync et ainsi de suite, les choses ont commencé à sembler BEAUCOUP plus compliquées que cela. Réseautage et démons et jargon, oh mon Dieu!

Je suppose qu'aucun de ces trucs n'est nécessaire tant que je rsynchronise simplement d'un ordinateur vers un disque externe connecté au firewire. Je me trompe en supposant cela? Les choses vont-elles vraiment être plus compliquées que ce commandement inoffensif?

stalepretzel
la source

Réponses:

10

Rsync fonctionne correctement sur les disques locaux. Cependant, s'il détecte des chemins locaux, il passe automatiquement en mode --whole-file qui ne copie pas les différences, mais copie simplement le fichier source sur le fichier de destination. Cependant, Rsync ignorera toujours les fichiers qui n'ont pas changé du tout. Lorsque la bande passante entre la source et la destination est élevée (comme deux disques locaux), cela est beaucoup plus rapide que de lire les deux fichiers, puis de copier uniquement les bits modifiés.

kbyrd
la source
2
s / Cependant / Heureusement / lorsque les fichiers sont locaux, lire les deux et faire toute la magie diff pour écrire le nouveau avec des parties des deux (les relire) est beaucoup plus de travail que de simplement lire la source, écrire la destination.
Javier
ne savait pas si je devais entrer dans cela dans ma réponse. Je vais l'ajouter maintenant.
kbyrd
31

J'utilise rsync avec les drapeaux suivants facilement mémorisables comme «glop» et «trunc» et «v».

rsync -gloptrunc $srcdir $dstdir

Un petit guide:

  • g - conserver les informations sur la propriété du groupe
  • l - copier les liens symboliques en tant que liens symboliques
  • o - conserver les informations du propriétaire
  • p - conserver les autorisations
  • t - conserver les horodatages
  • r - recurse à travers les répertoires
  • u - mettre à jour, ignorer les nouveaux fichiers
  • [n] - non, ne fais pas ça, fais plutôt un run à sec
  • c - somme de contrôle, essayez les sommes de contrôle sur les blocs de fichiers lorsque cela est possible (*)
    remarque: sur les systèmes de fichiers locaux, cela est remplacé et des fichiers entiers sont copiés à la place.
  • v - verbeux

J'exécute toujours ce qui précède pour m'assurer que cela fonctionne, puis je supprime l'indicateur 'n' qu'une fois que je suis satisfait des résultats.

Les principales caractéristiques des combinaisons ci-dessus:

  • Je l'exécute dans les DEUX directions entre deux (ou plus) serveurs, synchronisant ainsi dans les DEUX directions. Vous mettez à jour celui que vous pensez être le maître à l'époque.
  • Il permet soit d'être le maître, avec la mise en garde importante que si vous voulez supprimer quelque chose, vous devez le supprimer sur les deux pour être sûr qu'il a vraiment disparu, sinon il revient.

J'utilise ceci pour garder deux machines synchronisées, ou pour garder des sous-répertoires synchronisés (comme sauvegarder sur une clé USB).

Comme l'un des autres messages a déclaré plus tôt, la «somme de contrôle» peut en fait être désactivée si vous avez affaire à des lecteurs locaux.

Dans de rares cas, j'ai dû ajouter des paramètres supplémentaires pour tenir compte des modifications des comptes de connexion sur les machines distantes, des changements de ports et même de spécifier où «rsync» réside sur l'hôte distant ... mais ceux-ci ne s'appliquent pas directement à votre question.

ericslaw
la source
3
Le drapeau -a pour rsync ne fait-il pas tout ce qui précède?
Rory
2
Je ne suis pas un grand fan de l'utilisation de drapeaux «méta» quand je ne sais pas exactement ce qu'ils font. Le manapage pour rsync indique que '-a' est en fait -rlptgoD sur ma boîte, qui saute 'u' et 'v' mais inclut 'D'. parmi ceux-ci, il me semble que l'ajout de «u» est la seule différence clé.
ericslaw
Comment puis-je le forcer à se mettre en miroir de la source à la destination (supprimer tout élément de la destination qui ne se trouve pas dans la source), plutôt que de copier dans les deux sens?
Gabriel Staples
1
On dirait que vous auriez besoin d'utiliser rsync -gloptrunc --delete --delete-excluded $srcdir $dstdir. Le --deletedit de supprimer tout ce qui n'est pas dans la source dans la destination, et --delete-excludeddit de supprimer également les fichiers exclus dans la destination qui ne devraient normalement pas être suivis ou copiés. Si vous utilisez --delete-excluded, techniquement, vous n'avez pas besoin de l'utiliser également --delete, mais vous pouvez tout de même les utiliser tous les deux. Les détails sont dans les pages de manuel ici: linux.die.net/man/1/rsync .
Gabriel Staples
Remarque: pour une utilisation générale de rsync, j'ai également écrit ce tutoriel pour moi-même, donc je peux le référencer si nécessaire: Comment utiliser rsync
Gabriel Staples
4

Rien de tout cela n'est nécessaire, vous pouvez utiliser rsync sans aucun démon ni aucun autre type de configuration JUSTE FINE!

Utilisez simplement la commande rsync et vous êtes prêt à partir.

OldJim
la source
2

À en juger par le chemin dans votre commande rsync, aurais-je raison de penser que vous utilisez Mac OS X?

Personnellement, je choisirais d'utiliser Time Machine (si vous utilisez Leopard) ou Carbon Copy Cloner ( http://www.bombich.com/software/ccc.html ) qui utilise rsync.

Beaucoup plus facile que d'essayer de corriger votre propre script. Un avantage est que Time Machine et CCC vous offriront tous deux des sauvegardes incrémentielles.

Steve Folly
la source
2

L'exemple que vous avez utilisé semble fonctionner correctement pour les sauvegardes.

Cependant, une chose que vous voudrez peut-être considérer lors de l'utilisation de rsync est d'utiliser l'option --link-dest. Cela vous permet de conserver plusieurs sauvegardes, mais d'utiliser des liens durs pour tous les fichiers inchangés, ce qui fait que toutes les sauvegardes prennent la place d'une sauvegarde incrémentielle. Un exemple d'utilisation serait:

rsync -aE --link-dest=/mnt/external_disk/backup_20090612 dir_to_backup \
    /mnt/external_disk/backup_20090613

Cela suppose que vous disposiez d'une sauvegarde datée du 12 juin et que vous souhaitiez en créer une nouvelle le 13 juin. Vous souhaiterez peut-être omettre l'option -v si vous ne souhaitez pas imprimer tous les fichiers.

marque
la source
1
rsnapshot est un système de sauvegarde qui utilise link-dest comme vous le décrivez pour conserver les sauvegardes de la version complète de manière efficace en termes d'espace.
Rory
1

Cela dépend vraiment si vous exécutez des bases de données ou non. Rsync récupérera un instantané de chaque fichier et ignorera toutes les écritures intermédiaires. Si vous souhaitez sauvegarder une base de données, vous devez envisager de configurer un filtre d'ignorance et d'exécuter les outils de vidage de base de données avant la synchronisation.

jldugger
la source
1

Votre commande telle qu'elle est écrite devrait fonctionner, mais vous voudrez peut-être regarder un programme appelé rsnapshot qui est construit au-dessus de rsync et conserve plusieurs versions de fichiers afin que vous puissiez revenir en arrière et regarder les choses telles qu'elles étaient la semaine dernière ou le mois dernier. La configuration est assez facile et elle est vraiment bonne pour l'optimisation de l'espace, donc à moins que vous n'ayez beaucoup de désabonnement, cela ne prend pas beaucoup plus d'espace qu'une seule sauvegarde.

Catherine MacInnes
la source
1

Vous n'avez pas mentionné votre système d'exploitation. En partant de l'hypothèse que son système d'exploitation basé sur * nix, votre commande est bonne.

Cependant, si un ou les deux disques sont au format NTFS, accessibles à partir de * nix ou même à partir de Windows à l'aide de Mobaxterm / cygwin, la fonctionnalité incrémentielle rsync ne fonctionnerait pas bien avec rsync -a (archive flag)

Si des lecteurs NTFS sont impliqués, vous pouvez utiliser:

rsync -rvh --size-only --delete /path/to/what/I/want/to/backup /Volumes/FW200/Backups

Téléchargez le client Mobaxterm ssh pour avoir la fonctionnalité rsync sous Windows.

Voici plus d'informations sur l'utilisation de rsync avec des lecteurs NTFS

Raman Kathpalia
la source
0

J'ai essayé d'utiliser rsync pour la sauvegarde, mais cela a fini par être un gâchis. rsync est mieux adapté à la «synchronisation» qu'à la sauvegarde. Et cela va pour toujours de comparer de gros fichiers.

J'ai fait des recherches un peu et j'en ai essayé plusieurs (essentiellement tester tout le monde à partir de la sauvegarde de recherche apt-cache dans ubuntu).

Enfin, je me suis retrouvé avec « backup2l - outil de sauvegarde / restauration à faible maintenance», c'est facile. J'aime la façon dont il gère la planification et la rotation (en niveaux). Je l'exécute chaque fois que mon lecteur externe USB est connecté à partir de la ligne de commande, mais vous pouvez également l'automatiser.

chmeee
la source
0

Essayez dirvish pour faire la sauvegarde. http://www.dirvish.org/
Il utilise les liens physiques de rsync dans les soi-disant coffres. Vous pouvez conserver autant de vos anciens vidages que le disque USB peut en contenir. Ou configurez-le de manière automatisée.

Une fois que vous comprenez l'idée de dirvish, il est plus pratique à utiliser que rsync avec toutes ses options.

Michèle
la source
rsnapshot fait similaire à dirvish
Rory