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.
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
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.
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.
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
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.
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.
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.
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
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.
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.