FRFAM.COM >> Famille >> Technologie &Innovation >> Informatique

Sauvegardez automatiquement vos fichiers sur un serveur distant avec Rsync

Vous êtes-vous déjà inquiété de perdre vos données ou vous en avez marre d'effectuer des sauvegardes manuelles quotidiennes ou hebdomadaires ? Utilisez le rsync et synchronisez automatiquement vos fichiers locaux sur un serveur distant aussi souvent que vous le souhaitez sans intervention manuelle. Veuillez noter que ce guide nécessite un accès à un serveur Linux distant (par exemple, AWS) et qu'il est écrit sous Ubuntu 20.04, bien que toute distribution Linux devrait fonctionner correctement.

Installer rsync

Avant toute chose, vérifiez si oui ou non rsync est installé. Sur votre PC local et votre serveur Web, exécutez cette commande :

rsync --version 

Si vous obtenez la version actuelle de rsync en retour, vous êtes prêt pour la section suivante. Sinon, si vous recevez une commande introuvable erreur, vous pouvez installer rsync avec cette commande :

sudo apt-get -y install rsync 

Générer une clé SSH

Nous utiliserons une clé SSH pour authentifier la connexion entre notre PC local et le serveur distant. Pour générer une nouvelle clé SSH sur votre PC local dans le terminal, exécutez la commande :

ssh-keygen -t rsa -b 4096 -f ~/.ssh/rsync.key 

Lorsque vous êtes invité à entrer un mot de passe, laissez-le vide et appuyez deux fois sur la touche Entrée. Cela générera deux nouveaux fichiers dans votre ~/.ssh/ répertoire nommé rsync.key qui est la clé privée, et rsync.key.pub , la clé publique.

Configurer le serveur distant

Bien que cela ne soit pas obligatoire, pour ce guide, nous allons créer un nouvel utilisateur sur le serveur distant pour les connexions rsync et pour stocker tous les fichiers de sauvegarde. Connectez-vous au serveur distant via SSH et exécutez cette commande :

sudo useradd -m rsync 

L'exemple ci-dessus utilise le nom d'utilisateur rsync , mais vous pouvez le changer en tout ce que vous souhaitez. Le -m L'option indique simplement à Linux de créer un répertoire personnel pour notre nouvel utilisateur.

Pour permettre à votre PC local de s'authentifier, la clé SSH publique qui a été générée dans la section précédente doit être copiée sur le serveur distant. Ouvrez le /~.ssh/rsync.key.pub fichier dans un éditeur de texte et vous verrez une grande ligne qui ressemble à quelque chose comme.

  ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDNhyYKsjcGGdXmzOM3742 + c + TzMLFdZtrMPj1q6JWNWzgY / gTGVy1C72kw6BcTYSG8B8kLQlaBRl16m2Gm8Ra / U1wl0TYSufOnRKjGq2glnBPysWNzR6i9qd4h / byKa4ptNH / ieYkT + BnSJVo8fT0iboYwEaL9D0jPtYxFzZes2ctsGZ / zi78VlX9N224YBtoZcrxK6gzKtcIVrplsXt4MbMCPc0hfr9f2VMt0HignLphTDLQWKwF3sGi4OHDPzNTRkjyHazsIOFIKDLQgdsIJv7b2VMs028YDqPnXHZZl4Ix5vg8ssqE + s / J + rzS0B6gwj2b / f6vJMI9DmTk8SO5LKWtSl4lXjLpQ1eP + xjf3SeMFWWkk2tPpGBo6d + 8VJT6htj9Ga927qx3bYJ3FDdqjoE / 28yBzMsg3wKI8lobiQGIbF0B0jZmSeq42ds7dh76iU / LOraWJWJhKPIjCYHdaVqj5rgxSulUW6oqr / LOxMNwsj5NLpyKygr5 / RVjCUpxQLw5G7AClmW5nOZDFUgtI1CAOzhG8oYQes7jE7ZbQKmMf9IGquNV1BCRGX2mbcYad77UE2IjzPqSG8pFGb7ekZA6ukUk61fqoheL4Zl2jmhhWoXQ09LZE9FNfr1UwIoZ + GwUcip8NPIZPSo + Z4yMB / 5VNF7J0o76eTNwh0gZlEw ==user @ host  

Cette longue ligne est la clé SSH publique. Copiez-le dans votre presse-papiers et, sur votre serveur distant, exécutez ces commandes :

sudo su rsync 
mkdir -m 0700 $HOME/.ssh 
echo "ssh-rsa AAAAB... user@host"> $HOME/.ssh/authorized_keys 
chmod 0644 $HOME/.ssh/authorized_keys 

Dans l'avant-dernière commande, remplacez le texte entre les guillemets par cette longue ligne de clé publique SSH. Ça y est, votre PC local pourra désormais s'authentifier auprès de votre serveur distant.

Configurer le fichier de configuration ssh

Par souci de simplicité, ajoutez une entrée au ~/.ssh/config fichier sur votre PC local pour vous connecter facilement au serveur distant. Ouvrez le fichier sur votre PC local avec la commande.

nano $HOME/.ssh/config 

Dans le fichier, ajoutez une entrée pour le serveur distant telle que :

hôte backup_server 
 nom d'hôte 192.168.0.24 
 utilisateur rsync 
 Fichier d'identité ~/.ssh/rsync 

Remplacez le nom d'hôte par l'adresse IP de votre serveur distant et, si vous avez utilisé un nom d'utilisateur autre que "rsync", modifiez-le également. Vous pouvez utiliser tout ce que vous souhaitez pour l'hôte, mais pour cet exemple, "backup_server" a été utilisé. Enregistrez et fermez le fichier en appuyant sur Ctrl+X suivi des touches "Y" et Entrée.

Testez votre connexion SSH au serveur distant avec la commande.

ssh backup_server 

En supposant que tout est correctement configuré, vous devriez maintenant être connecté à votre serveur distant via SSH. Fermez la connexion avec la commande.

quitter 

Synchroniser vos fichiers

Testez maintenant le rsync fonctionnalité, et par exemple, pour synchroniser votre répertoire Documents sur votre PC local, exécutez la commande :

rsync -avz --progress ~/Documents/ backup_server:~/Documents 

La première occurrence de ~/Documents/ spécifie le fichier ou le répertoire local à synchroniser, backup_server correspond à l'entrée ajoutée au ~/.ssh/config file, et la fin :~/Documents spécifie simplement de tout télécharger dans le répertoire /Documents du serveur distant par rapport au répertoire personnel.

Connectez-vous au serveur distant et vous devriez voir un nouveau répertoire Documents synchronisé avec celui de votre PC local. Chaque fois que vous exécutez la commande ci-dessus, seuls les fichiers qui ont été modifiés depuis la dernière fois seront téléchargés, de sorte que vous ne téléchargez pas constamment tout le contenu du répertoire.

Automatiser via Crontab

Maintenant que tout est testé et fonctionne correctement, nous pouvons facilement automatiser l'ensemble du processus en ajoutant une tâche crontab à notre PC local. Pour synchroniser automatiquement votre dossier local avec le serveur distant toutes les 15 minutes, dans le terminal, exécutez la commande.

(crontab -l; echo "*/15 * * * * rsync -avz --progress ~/Documents/ backup_server:~/Documents> /dev/null 2>&1";) | crontab 

Vous pouvez recevoir un message "pas de crontab pour l'utilisateur", et vous pouvez simplement l'ignorer. Modifier les Documents répertoire vers ce que vous souhaitez sauvegarder, mais assurez-vous de laisser une barre oblique finale pour les répertoires, sinon ils ne seront pas correctement sauvegardés.

Vérifiez que la tâche crontab a bien été ajoutée avec la commande.

crontab -l 

Si vous voyez le travail crontab qui vient d'être ajouté, alors tout est en place. Attendez 15 minutes, vérifiez votre serveur distant et tous les fichiers nécessaires devraient s'y trouver. À partir de maintenant, toutes les modifications apportées à vos fichiers seront automatiquement téléchargées sur le serveur distant toutes les 15 minutes.

Télécharger à partir du serveur distant

Vous pouvez également utiliser rsync pour télécharger des fichiers depuis le serveur distant et les synchroniser avec votre PC local. En utilisant l'exemple de répertoire /Documents ci-dessus, dans le terminal, exécutez la commande :

rsync -chavzP backup_server:~/Documents/ ~/Documents 

Le ~./Documents répertoire sur votre PC local devrait maintenant être une image miroir du serveur distant.

Inclure et exclure des modèles

Si vous avez besoin de synchroniser uniquement les fichiers qui correspondent à un certain modèle, comme se terminer par .html vous pouvez utiliser le --include modèle. Dans le terminal, exécutez la commande.

rsync -avz --include "*.html" --progress ~/mysite/ backup_server:~/public_html 

Vérifiez le serveur distant et vous verrez que seuls les fichiers avec une extension .html du répertoire local /mysite/ ont été téléchargés dans le répertoire distant /public_html/. De même, vous pouvez également tout synchroniser sauf certains fichiers avec le --exclude option. Par exemple, la commande suivante synchronisera tous les fichiers sauf ceux avec un .txt extension.

rsync -avz --exclude "*.txt" --progress ~/mysite/ backup_server:~/public_html 

Synchroniser deux répertoires locaux

Si jamais nécessaire, vous pouvez également synchroniser deux répertoires locaux avec la commande.

rsync -zvr ~/source/répertoire ~/destination/répertoire 

Cette commande fonctionne exactement de la même manière que lors de la synchronisation avec un serveur distant, la seule différence étant qu'il s'agit de deux répertoires locaux.

Reposez-vous tranquillement

Vous pouvez maintenant pousser un soupir de soulagement en sachant que vos risques de perte de données sont désormais considérablement réduits. Dans cet article, vous avez appris ce que rsync c'est-à-dire comment générer et installer une clé SSH, définir un serveur dans le ~./.ssh/config fichier, synchroniser un répertoire local et distant et automatiser l'ensemble du processus via crontab. À l'avenir, tous les fichiers nécessaires seront toujours synchronisés avec votre serveur distant avec un délai de seulement 15 minutes.


[]