Stations de travail en ligne OnWorks Linux et Windows

Logo

Hébergement gratuit en ligne pour les postes de travail

<Précédent | Table des matières | Suivant>

Synchronisation des fichiers et des répertoires

Une stratégie courante pour conserver une copie de sauvegarde d'un système consiste à synchroniser un ou plusieurs répertoires avec un autre répertoire (ou des répertoires) situé sur le système local (généralement un périphérique de stockage amovible) ou sur un système distant. Nous pourrions, par exemple, avoir une copie locale d'un site Web en cours de développement et la synchroniser de temps en temps avec la copie « live » sur un serveur Web distant.

Dans le monde de type Unix, l'outil préféré pour cette tâche est rsync. Ce programme peut synchroniser les répertoires locaux et distants en utilisant le protocole de mise à jour à distance rsync, ce qui permet rsync pour détecter rapidement les différences entre deux répertoires et effectuer le minimum de copie requis pour les synchroniser. Cela fait rsync très rapide et économique à utiliser, par rapport à d'autres types de programmes de copie.

rsync est invoqué comme ceci :

rsync options source destination

De la source ainsi que destination sont l'un des suivants :


● Un fichier ou un répertoire local

● Un fichier ou un répertoire distant sous forme de [utilisateur@]hôte:chemin

● Un serveur rsync distant spécifié avec un URI de rsync://[utilisateur@]hôte[:port]/chemin

Notez que la source ou la destination doit être un fichier local. La copie à distance n'est pas prise en charge.

Essayons rsync sur certains fichiers locaux. Tout d'abord, nettoyons notre foo annuaire:


[moi@linuxbox ~]$ rm -rf foo/*

[moi@linuxbox ~]$ rm -rf foo/*


Ensuite, nous allons synchroniser le cour de récréation répertoire avec une copie correspondante dans foo:


[moi@linuxbox ~]$ rsync -av aire de jeux foo

[moi@linuxbox ~]$ rsync -av aire de jeux foo


Nous avons inclus à la fois le -a option (pour l'archivage-provoque la récursivité et la préservation des attributs de fichier) et le -v option (sortie verbeuse) pour faire un miroir des cour de récréation répertoire dans foo. Pendant l'exécution de la commande, nous verrons une liste des fichiers et répertoires en cours de copie. À la fin, nous verrons un message récapitulatif comme celui-ci :



envoyé 135759 octets reçu 57870 octets 387258.00 octets/s la taille totale est de 3230 accélération est de 0.02

envoyé 135759 octets reçu 57870 octets 387258.00 octets/s la taille totale est de 3230 accélération est de 0.02


indiquant la quantité de copie effectuée. Si nous exécutons à nouveau la commande, nous verrons un résultat différent :



[moi@linuxbox ~]$ rsync -av playground foo

liste de fichiers de construction ... terminé


envoyé 22635 octets reçu 20 octets 45310.00 octets/s la taille totale est de 3230 accélération est de 0.14

[moi@linuxbox ~]$ rsync -av playground foo

liste de fichiers de construction ... terminé


envoyé 22635 octets reçu 20 octets 45310.00 octets/s la taille totale est de 3230 accélération est de 0.14


Notez qu'il n'y avait pas de liste de fichiers. Ceci est dû au fait rsync détecté qu'il n'y avait pas de différences entre ~/aire de jeux ainsi que ~/foo/terrain de jeu, et donc il n'a pas eu besoin de copier quoi que ce soit. Si nous modifions un fichier dans cour de récréation et courir rsync encore:


[moi@linuxbox ~]$ toucher aire de jeux/dir-099/fichier-Z [moi@linuxbox ~]$ rsync -av aire de jeux foo liste de fichiers de construction ... terminé

aire de jeux/dir-099/fichier-Z

envoyé 22685 octets reçu 42 octets 45454.00 octets/s la taille totale est de 3230 accélération est de 0.14

[moi@linuxbox ~]$ toucher aire de jeux/dir-099/fichier-Z [moi@linuxbox ~]$ rsync -av aire de jeux foo liste de fichiers de construction ... terminé

aire de jeux/dir-099/fichier-Z

envoyé 22685 octets reçu 42 octets 45454.00 octets/s la taille totale est de 3230 accélération est de 0.14


on voit ça rsync détecté le changement et copié uniquement le fichier mis à jour.

Comme exemple pratique, considérons le disque dur externe imaginaire que nous avons utilisé plus tôt avec goudron. Si nous attachons le lecteur à notre système et, encore une fois, il est monté à /media/BigDisk, nous pouvons effectuer une sauvegarde du système utile en créant d'abord un répertoire nommé /sauvegarde sur le lecteur externe, puis en utilisant rsync pour copier les éléments les plus importants de notre système vers le lecteur externe :



[moi@linuxbox ~]$ mkdir /media/BigDisk/sauvegarde

[moi@linuxbox ~]$ sudo rsync -av --delete /etc /home /usr/local

/media/BigDisk/sauvegarde

[moi@linuxbox ~]$ mkdir /media/BigDisk/sauvegarde

[moi@linuxbox ~]$ sudo rsync -av --delete /etc /home /usr/local

/media/BigDisk/sauvegarde


Dans cet exemple, nous avons copié le / Etc, / homeet / Usr / local répertoires de notre système vers notre périphérique de stockage imaginaire. Nous avons inclus le --effacer option pour supprimer les fichiers qui ont pu exister sur le périphérique de sauvegarde qui n'existaient plus sur le périphérique source (cela n'est pas pertinent la première fois que nous faisons une sauvegarde, mais sera utile sur les copies suivantes). Répétez la procédure de connexion du lecteur externe et exécutez cette rsync serait un moyen utile (mais pas idéal) de sauvegarder un petit système. Bien sûr, un alias serait utile ici aussi. Nous pourrions créer un alias et l'ajouter à notre

.bashrc pour fournir cette fonctionnalité :


alias backup='sudo rsync -av --delete /etc /home /usr/local

/media/BigDisk/backup'

alias backup='sudo rsync -av --delete /etc /home /usr/local

/media/BigDisk/backup'


Maintenant, tout ce que nous avons à faire est de connecter notre lecteur externe et d'exécuter le sauvegarde commande pour faire le travail.


 

Meilleur système d'exploitation Cloud Computing chez OnWorks :