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.