GNU/Linux >> Tutoriels Linux >  >> Linux

Outils d'administration système :utilisation de rsync pour gérer la sauvegarde, la restauration et la synchronisation des fichiers

En tant qu'administrateur système, je consacre la majeure partie de mon énergie à deux choses (à part m'assurer qu'il y a du café) :m'inquiéter d'avoir des sauvegardes et trouver la meilleure façon de faire les choses. L'un de mes outils préférés pour résoudre les deux problèmes s'appelle rsync .

Rsync a été créé par l'une des personnes qui ont inventé la samba, Andrew Tridgell. C'est un outil tellement utile et flexible qu'il est inclus dans chaque version de Linux et a été porté sur d'autres systèmes d'exploitation. Plus simplement, rsync est un outil pour copier des fichiers. Cependant, c'est beaucoup plus puissant que cela.

  • Il conserve deux ensembles de fichiers à jour et synchronisés.
  • Il s'exécute comme une commande et peut être scripté.
  • Il compresse et chiffre le flux de données.
  • Il utilise plusieurs types de clients d'accès à distance (SSH et RSH, par exemple).

Il n'est donc pas surprenant qu'il soit l'un des favoris de nombreux administrateurs système.

Les bases

Comme le mv et cp commande, dans sa forme la plus basique rsync a juste besoin d'une source et d'une destination :

[root@milo enable]# rsync ./foo/testfoo ./bar/

[root@milo enable]# ls -ilR
.:
total 8
5079202 drwxrwxr-x 2 skipworthy skipworthy 4096 Jun 11 15:15 bar
5079201 drwxrwxr-x 2 skipworthy skipworthy 4096 Jun 11 15:08 foo

./bar:
total 8
5001398 -rw-rw-r-- 1 skipworthy skipworthy 8 Jun 11 15:08 testbar
4982446 -rw-rw-r-- 1 root       root       8 Jun 11 15:15 testfoo

./foo:
total 4
5001268 -rw-rw-r-- 1 skipworthy skipworthy 8 Jun 11 15:08 testfoo

Nous avons copié testfoo à la bar annuaire. Pas grave, vraiment.

Maintenant, ajoutons un fichier à ./foo et resynchroniser :

[root@milo enable]# touch ./foo/bat.txt

[root@milo enable]# rsync ./foo/* ./bar/
[root@milo enable]# ls -ilR
.:
total 8
5079202 drwxrwxr-x 2 skipworthy skipworthy 4096 Jun 11 15:45 bar
5079201 drwxrwxr-x 2 skipworthy skipworthy 4096 Jun 11 15:25 foo

./bar:
total 8
4992599 -rw-r--r-- 1 root       root       0 Jun 11 15:45 bat.txt
5001398 -rw-rw-r-- 1 skipworthy skipworthy 8 Jun 11 15:08 testbar
4992604 -rw-rw-r-- 1 root       root       8 Jun 11 15:45 testfoo

./foo:
total 4
5002591 -rw-r--r-- 1 root       root       0 Jun 11 15:25 bat.txt
5001268 -rw-rw-r-- 1 skipworthy skipworthy 8 Jun 11 15:08 testfoo

À ce stade, nous voulons noter deux ou trois choses. Tout d'abord, lorsque nous avons relancé rsync , il a recopié testfoo et mis à jour le atime . De plus, chaque fois qu'il copie un fichier, il donne au fichier un nouveau inode Numéro. Par conséquent, en ce qui concerne le système de fichiers, il s'agit d'un fichier totalement différent (car il l'est—il a copié tout l'information à chaque fois). Enfin, notez que lorsque nous rsync le fichier, il change la propriété de l'utilisateur qui a exécuté la commande (root, dans ce cas).

Tout cela est important si nous voulons faire des sauvegardes. Ce comportement est le même que le cp commande. On peut aussi utiliser le cp commande pour copier les répertoires de manière récursive, ainsi que pour préserver les attributs et la propriété. La grande différence est que rsync peut faire une somme de contrôle du fichier et comparer les fichiers source et destination, où cp regarde juste le atime valeur. Rsync La fonctionnalité supplémentaire de est utile pour préserver l'intégrité de la sauvegarde (nous aborderons l'intégrité plus tard dans cette série).

Alors mettons à jour un seul de ces fichiers et voyons ce que rsync fait :

[root@milo enable]# echo 'this is new text'>>./foo/testfoo
 
[root@milo enable]# ls -al ./foo
 
-rw-rw-r-- 1 skipworthy skipworthy   25 Jun 11 16:13 testfoo

[root@milo enable]# rsync -aruv ./foo/* ./bar/
sending incremental file list
testfoo

sent 194 bytes  received 35 bytes  458.00 bytes/sec
total size is 25  speedup is 0.11

[root@milo enable]# ls -ilR
.:
total 8
5079202 drwxrwxr-x 2 skipworthy skipworthy 4096 Jun 11 16:16 bar
5079201 drwxrwxr-x 2 skipworthy skipworthy 4096 Jun 11 15:56 foo

./bar:
total 8
4992599 -rw-r--r-- 1 root       root        0 Jun 11 15:45 bat.txt
4998080 -rw-r--r-- 1 root       root        0 Jun 11 15:56 footoo.txt
5001398 -rw-rw-r-- 1 skipworthy skipworthy  8 Jun 11 15:08 testbar
4983541 -rw-rw-r-- 1 skipworthy skipworthy 25 Jun 11 16:13 testfoo

./foo:
total 4
5002591 -rw-r--r-- 1 root       root        0 Jun 11 15:25 bat.txt
4997949 -rw-rw-r-- 1 skipworthy skipworthy  0 Jun 11 15:56 footoo.txt
5001268 -rw-rw-r-- 1 skipworthy skipworthy 25 Jun 11 16:13 testfoo

Notez que cette fois nous avons utilisé quelques commutateurs :

  • -a Mode archive, conserve mtime , autorisations et liens symboliques.
  • -r Mode récursif, explore tous les répertoires et les synchronise (devrait être redondant avec le -a switch, mais je le spécifie toujours quand même).
  • -u Ne met à jour les fichiers que si le mtime sur la source est plus récent.
  • -v Mode verbeux, vous indique ce qu'il fait (c'est toujours agréable de pouvoir surveiller ce qui se passe. Une autre astuce utile consiste à diriger cette sortie vers un fichier et à la vérifier plus tard).

Restaurer le fichier avec rsync

Alors disons que c'est quelques semaines plus tard. Le directeur financier appelle et dit que quelque chose ne va pas :de nombreux fichiers manquent dans son répertoire /foo.

./foo:
total 8
5002591 -rw-r--r-- 1 root       root        0 Jun 11 15:25 bat.txt
4997949 -rw-rw-r-- 1 skipworthy skipworthy 33 Jul 24 15:32 footoo.txt
5001268 -rw-rw-r-- 1 skipworthy skipworthy 25 Jun 11 16:13 testfoo

Nous examinons les sauvegardes et voyons les fichiers manquants :

./bar:
total 12
4992599 -rw-r--r-- 1 root       root        0 Jun 11 15:45 bat.txt
4994298 -rw-rw-r-- 1 skipworthy skipworthy 33 Jul 24 15:32 footoo.txt
4994359 -rw-r--r-- 1 root       root        0 Jul 24 15:31 laterfiles1.txt
4994367 -rw-r--r-- 1 root       root        0 Jul 24 15:31 laterfiles2.txt
4994374 -rw-r--r-- 1 root       root        0 Jul 24 15:31 laterfiles3.txt
4994413 -rw-r--r-- 1 root       root        0 Jul 24 15:31 laterfiles4.txt
5001398 -rw-rw-r-- 1 skipworthy skipworthy  8 Jun 11 15:08 testbar
4983541 -rw-rw-r-- 1 skipworthy skipworthy 25 Jun 11 16:13 testfoo

Un rapide rsync restaurer :

[root@milo enable]# rsync -aruv ./bar/* ./foo
sending incremental file list
bat.txt
laterfiles1.txt
laterfiles2.txt
laterfiles3.txt
laterfiles4.txt
testbar

Et :

./foo:
total 12
4994387 -rw-r--r-- 1 root       root        0 Jun 11 15:45 bat.txt
4997949 -rw-rw-r-- 1 skipworthy skipworthy 33 Jul 24 15:32 footoo.txt
4994562 -rw-r--r-- 1 root       root        0 Jul 24 15:31 laterfiles1.txt
4994564 -rw-r--r-- 1 root       root        0 Jul 24 15:31 laterfiles2.txt
4994565 -rw-r--r-- 1 root       root        0 Jul 24 15:31 laterfiles3.txt
4994567 -rw-r--r-- 1 root       root        0 Jul 24 15:31 laterfiles4.txt
4994579 -rw-rw-r-- 1 skipworthy skipworthy  8 Jun 11 15:08 testbar
5001268 -rw-rw-r-- 1 skipworthy skipworthy 25 Jun 11 16:13 testfoo

Les fichiers manquants sont restaurés ou mis à jour à partir des sauvegardes les plus récentes, mais les fichiers existants, qui n'ont pas changé, sont laissés seuls. Notez également que la propriété de footoo.txt a été préservé.

Récapitulez

Je vous encourage à jeter un œil (comme toujours) à la page de manuel de rsync , et essayez cette commande utile.

Voici quelques options supplémentaires à prendre en compte :

  • -r (récursif)
  • -b (sauvegardes)
  • -R (relatif)
  • -u (mise à jour - copier uniquement les fichiers modifiés)
  • -P (progrès)
  • -c (compresser)
  • -p (préserver les autorisations)

Dans le prochain article de cette série, nous irons un peu plus loin et examinerons le rsync distant et certaines des autres fonctionnalités plus avancées de cette commande.

[ Cours en ligne gratuit :Présentation technique de Red Hat Enterprise Linux. ]


Linux
  1. Comment sauvegarder et restaurer la base de données MySQL à l'aide de la ligne de commande

  2. Comment sauvegarder et restaurer une base de données dans PostgreSQL

  3. Sauvegarder et restaurer la base de données MySQL à l'aide de mysqlhotcopy

  4. Utilisation des options d'inclusion et d'exclusion de Rsync pour inclure le répertoire et le fichier par modèle

  5. Linux ext4 restaurer les droits d'accès au fichier et au répertoire après une mauvaise sauvegarde/restauration

Comment sauvegarder et restaurer une carte SD pour Raspberry Pi

Comment sauvegarder et restaurer des données à l'aide de Retic sous Linux

Comment sauvegarder et restaurer des fichiers à l'aide de BorgBackup sous Linux

Comment sauvegarder des fichiers et des répertoires à l'aide de Rsync sous Linux

Sauvegarder et restaurer les applications Ubuntu à l'aide d'Aptik

Comment utiliser Timeshift pour sauvegarder et restaurer Linux