Travailler avec RSYNC

Travailler avec RSYNC

En tant qu'administrateur système ou tout simplement un utilisateur de la maison, tôt ou tard (généralement plus tôt), vous devrez faire face aux sauvegardes. Les catastrophes se produisent, allant des tempêtes électriques à des échecs de conduite, et il faut être préparé. Nous ne pouvons pas souligner suffisamment l'importance d'avoir des copies de données importantes. Bien que tout le concept de sauvegarde soit trop long pour cet article, nous nous concentrerons sur RSYNC pour ce qu'on appelle les sauvegardes incrémentielles.

Les sauvegardes incrémentielles sont basées sur l'idée que, une fois que vous avez une copie des données dont vous avez besoin pour sauvegarder, les sauvegardes qui en résultent des mêmes données devraient être incrémentielles, ce qui signifie que vous mettez uniquement à mettre à jour la copie de sauvegarde avec les différences depuis la dernière opération, et non créer une autre copie complète. Nous détaillerons ici une configuration que nous avons à la maison pour sauvegarder des données importantes, mais les exemples ici peuvent être utilisés dans des installations plus grandes. Une fois que vous aurez commencé, vous saurez quoi, où et quand vous avez besoin.

Si vous avez un serveur de sauvegarde qui est en place 24/7, vous pouvez créer un cronjob pour sauvegarder périodiquement vos données. Étant donné que notre exemple est basé à domicile, nous avons un serveur de sauvegarde, mais comme il n'est pas tout le temps, nous vous montrerons comment le faire manuellement. RSYNC doit être installé sur les deux systèmes, et c'est à peu près tout, aucun autre état d'installation ne doit être effectué, du moins dans des cas simples. N'oubliez pas que vous n'êtes pas, par tous les moyens, lié à Linux ou à une autre plate-forme UNIX: RSYNC est également disponible pour Windows. Si vous vous inquiétez de la sécurité, RSYNC travaille sur SSH et peut être considéré comme un remplacement sécurisé pour RCP (copie distante) Commande, donc tout va bien.

Travailler avec RSYNC

Dans notre scénario, la machine contenant des fichiers à sauvegarder est une machine de test debian; Nous avons simplement fait un

 # aptitude installer rsync 

Pour l'installer et c'était tout ce que nous avions à faire sur cette machine. La machine de sauvegarde est un FreeBSD 8.Boîte à 2 stables, et là nous avons fait

 # CD / USR / PORTS / NET 

Pour installer RSYNC. Nous n'avons aucune configuration supplémentaire sur aucune de ces machines, mais encore une fois, c'est un scénario simple. Lisez le manuel RSYNC pour les options dont vous pourriez avoir besoin pour votre cas particulier. Avant d'arriver à la vraie affaire, expliquons un peu les options de RSYNC habituelles et les options de ligne de commande (oui, nous savons, 90% ne lisent pas les manuels). Avec RSYNC, vous pouvez retirer ou pousser les données de / vers sa destination, donc généralement la syntaxe sera

[pull] rsync [options] $ source $ destination [push] rsync [options] $ destination $ source 

Le chemin local peut être n'importe quel chemin relatif ou absolu. Le chemin distant est exactement comme celui que vous utilisez avec SSH ou d'autres programmes qui fonctionnent sur ssh: $ user @ $ hostname ou $ iPaddress: $ path . Traduire ce que nous avons dit ci-dessus et utiliser un exemple pratique (le lecteur de stockage des sauvegardes est monté sous / data1 sur la machine BSD et nous voulons sauvegarder tous les films de l'utilisateur sur 10.1.3.98), nous voulons pousser les fichiers de la boîte Debian à la boîte FreeBSD, donc nous faisons

 $ RSync [Options] User @ 10.1.3.98: / home / user / films / / data1 / 

Du terminal de FreeBSD. Bien sûr, vous devez remplacer «l'utilisateur», les emplacements et les adresses IP par tout ce qui convient sur votre site. Comme nous l'avons dit, vous pouvez facilement remplacer l'adresse IP par un nom d'hôte, que ce soit dans votre réseau local (assurez-vous de modifier / etc.hôtes) ou un nom d'hôte distant connu par votre serveur DNS. Assurez-vous également que vous avez les bons autorisations pour le dossier de destination et que vous pouvez également lire le répertoire de données source. L'utilisation de la commande ci-dessus sans options ne fera rien, car la source est un répertoire, pas un fichier spécifique. Vous pouvez utiliser des jilèges Shell avec RSYNC, comme

 $ RSync [Options] User @ 10.1.3.98: / home / utilisateur / films / * / data1 / 

Puisque RSYNC est un logiciel intelligent, c'est mieux si vous utilisez

 $ RSYNC -AVR User @ 10.1.3.98: / home / user / films / / data1 / 

qui copiera les données dans le répertoire des films en mode archive (-a) verbosely (-v) et récursivement (-r). Pour faire court, si vous souhaitez copier un répertoire entier, n'oubliez pas -R et si vous voulez exactement le contraire, utilisez -D, qui ne copiera que la structure du répertoire, sans les fichiers. Si la bande passante est une préoccupation, ajoutez le drapeau -Z, mais n'oubliez pas qu'il y a toujours un compromis entre la bande avec la bande et le temps du CPU: les données compressées insistent davantage les machines, car on comprime et envoie, l'autre reçoit et décompressez. En un mot, c'est tout ce que nous avons vraiment fait pour notre cas ici. Nous utiliserons les commandes exactes plus l'indicateur -backup plus tard lorsque nous voulons synchroniser les données de la boîte de sauvegarde et, comme indiqué précédemment, seules les différences seront synchronisées. Néanmoins, nous vous présenterons d'autres options utiles et largement utilisées pour RSYNC, car c'est l'un des nombreux scénarios dans lesquels RSYNC peut vous servir, en particulier qu'il est petit et rapide.

Autres options pour RSYNC

RSYNC a beaucoup d'autres options utiles: ce que nous avons fait, c'est seulement vous donner un exemple commun et simple. L'indicateur -e vous permet de spécifier le shell distant à utiliser avec rsync, comme

 $ RSYNC -E SSH [Arguments] 

Si vous souhaitez ne pas synchroniser les fichiers plus récents du côté récepteur, l'utilisation de -U vous y mènera. -Les progrès vous montrent un beau rapport en direct détaillé sur le processus de synchronisation à distance. -Delete supprimera le fichier à la machine cible, s'il est déjà là. Si le fichier n'existe pas et que vous ne voulez pas qu'il soit créé, vous avez donc besoin d'une mise à jour pure des fichiers déjà existants, utilisez-existant. Je veux voir les changements? Pas de problème, utilisez -I.

Maintenant, ce ne sont qu'une petite partie de la pléthore d'options que RSYNC offre, nous vous laisserons découvrir le reste. Ainsi, notre commande initiale, avec toutes ces nouvelles options que nous avons apprises, ressemblerait à ceci:

 $ RSYNC -E SSH -AVRIZ --PROGRESS - User-SELETE @ 10.1.3.98: / home / user / films / / data1 / 

Nous espérons que vous trouverez ce logiciel autant que nous l'aimons, et si vous avez des questions, oui, nous le répétons encore et encore: utilisez le manuel, Luke. Rappelez-vous pour utiliser RSYNC avec soin, puisque, car, comme vous l'avez rassemblé, certaines de ses `` options peuvent être assez destructrices. En fin de compte, pour vous aider à gérer les situations quotidiennes, nous vous présenterons quelques exemples:

Plus d'exemples RSYNC

1. Disons que vous souhaitez synchroniser un seul fichier. De toute évidence, vous n'avez pas besoin de -R, car c'est spécifique au répertoire, donc vous ferez juste

 $ RSYNC -V User @ host: / etc / addUser.conf / root / 

2. Peut-être que vous voulez jouer avec des modèles plus avancés que votre shell ne peut le fournir, ou vous voulez simplement exclure / inclure des fichiers / répertoires. Vous utiliserez simplement - inclure et-exclure, comme ainsi:

 $ rsync -avz --include 'g *' --exclude '*' user @ host: / etc / / root / config / 

Cette commande ne copiera que les répertoires de / etc / qui commencent par un «g» et excluront tout le reste.

3. Vous souhaitez peut-être limiter la taille maximale des transferts RSYNC à partir de la destination. On peut utiliser -max-size = 'size' où 'taille' peut être fixée avec k pour KB, M pour MB et G pour GB.

$ RSYNC -AVZ --Limit-Size = '2G' / Home / User / Films / BackupMedia

4. Nous avons parlé, jusqu'à présent, à quel point RSYNC est bon pour les sauvegardes incrémentielles. Mais si vous voudrez peut-être transférer le fichier entier, encore une fois, vous êtes libre de le faire. Utilisez simplement -W:

 $ RSync -avzw / home / user / films / hackers2.Avi / BackupMedia / 

5. Saviez-vous que RSYNC peut exécuter des commandes sur la machine distante afin de vous aider à avoir une liste de quoi copier / synchroniser? Cela peut, et cela fonctionne comme suit:

 $ RSYNC -AVRZ User @ Host: "Find / Home / User / Development / -Name *.C -print "\ / Backup / Development / 

6. Si vous souhaitez modifier la méthode de chiffrement par défaut que SSH utilise, utilisez -RSH:

 $ RSYNC -AVZ --RSH = "SSH -C ArcFour -L User" / Source / Destination 

Vous voudrez peut-être l'utiliser surtout si vous êtes sur une machine très lente.

7. Ce point traite de la préservation de divers attributs des fichiers copiés: -p conserve les autorisations, -x conserve xATTRS, -a préserve les ACL (votre système de fichiers source doit avoir le concept d'ACLS, bien sûr), -O, conserve le propriétaire (SuperUser uniquement ), -H, préserve les liens durs et le groupe de préserves -g. Faites une recherche après le mot «conserver» dans le manuel RSync si ce que vous voulez conserver n'est pas répertorié ici. N'oubliez pas que -a fait la majeure partie de la partie de conservation pour vous, mais si vous voulez un contrôle plus fin, vous êtes libre de le faire.

 $ RSYNC -VZPXAOHG / Source / Destination 

8. RSYNC est utilisé par les propriétaires de miroirs du monde entier pour rester à jour avec le ou les projets, ils reflètent. Voici quelques exemples:

$ RSync -vaz - Delete FTP4.de.FreeBSD.org :: freebsd / / pub / freebsd / $ rsync -avz --delete --safe-links rsync.apache.org :: Apache-Dist / Path / To / Mirror $ RSYNC -AUH RSYNC: // RSYNC.chiark.Greenend.org.UK / FTP / Users / Sgtatham / Putty-Website-mirror / . 

9. Nous voulons émettre un dernier mot d'avertissement: la finale «/» dans l'adresse source est importante. Si tu fais

 $ RSYNC -avz / source / destination 

vous obtiendrez un résultat différent de ce que vous l'avez fait

 $ RSYNC -AVZ / SOURCE / / DSTINATION 

Nous vous laisserons découvrir quelle est la différence, cependant, n'essayez pas cette découverte sur des données importantes!

Tutoriels Linux connexes:

  • Comment tester votre CPU sur Linux
  • Choses à installer sur Ubuntu 20.04
  • Choses à faire après l'installation d'Ubuntu 20.04 Focal Fossa Linux
  • Exemples RSync dans Linux
  • Comment partitionner le lecteur USB en Linux
  • Comment utiliser Google Drive sur Linux
  • Comment comparer les performances du disque sur Linux
  • Ubuntu 20.04 Guide
  • Choses à installer sur Ubuntu 22.04
  • Une introduction à l'automatisation Linux, des outils et des techniques