web-dev-qa-db-fra.com

Comment feriez-vous pour sauvegarder un VPS Ubuntu distant via SSH?

Donc, comme je l'ai dit, j'ai un VPS, Raspberry Pi et un plan, mais j'ai besoin de conseils, alors allez-y.

J'ai un VPS avec prgmr.com que je mets en marche Nice et en douceur, sans aucun problème. J'ai également un nouveau RaspberryPi assis sur mon bureau, avec le téléchargement de Raspberrian au fur et à mesure que je tape. Mon plan est d’utiliser le Raspberry Pi comme serveur de sauvegarde à la maison, alors ma question est la suivante:

Comment feriez-vous pour sauvegarder un VPS Ubuntu distant via SSH?

Le VPS est configuré en tant que serveur Web, mais je voudrais configurer un travail cron sur le Pi afin qu'il puisse se connecter automatiquement au VPS et exécuter puis télécharger une sauvegarde, juste au cas où j'arriverais à maquiller quoi que ce soit d'autre cela me fait perdre des données. Naturellement, je veux que cette sauvegarde contienne tout pour que je puisse rapidement restaurer l’ensemble du serveur, le tout correctement configuré tel qu’il est aujourd’hui si les choses tournent mal.

Comment feriez-vous pour exécuter ce type de sauvegarde? Je pensais que je devrais écrire une sorte de script bash sur SSH, compresser tous les fichiers pertinents dans un fichier tar.gz ou similaire et télécharger les images via SCP.

Que pensez-vous de ceci? Quels paquets, etc. utiliseriez-vous et comment le configureriez-vous? Le VPS a une pile LAMP, alors quels fichiers voudriez-vous sauvegarder? Il a également beaucoup d'autres programmes plus petits tels que GIT et ZendTools installés.

4
Daniel Groves

Authentification par clé publique SSH

La première chose à faire est de commencer par l’authentification par clé publique ssh. Cela permettra à votre script d'utiliser SSH sans mot de passe.

SSH est uniquement installé sur le serveur et une authentification par clé publique est configurée pour l'utilisateur qui exécutera le script de sauvegarde à partir de RasPi.

Voici un bon tutoriel pour l'authentification par clé publique: https://hkn.eecs.berkeley.edu/~dhsu/ssh_public_key_howto.html

Option 1: SSH et Tar

Vous pouvez compresser le fichier tar.gz à partir du serveur et le transmettre directement sur ssh avec quelque chose comme ceci:

ssh [email protected] "tar -czvf - / 2> /var/log/sshbackup" > vpsbackup.tar.gz

Cela rendra les fichiers tar et gzip de VPS sur/et le transmettra sur SSH pour le stocker dans vpsbackup.tar.gz sur le RasPi. Un journal de la sauvegarde la plus récente sera conservé dans/var/log/sshbackup sur le SMV.

Option 2: Rsync

Envoyer un fichier .tar.gz complet via SSH est inefficace ... Les fichiers qui ne changent pas seront toujours transmis. Une meilleure solution consiste à utiliser rsync, mais cela rend difficile la création d'un fichier .tar.gz préservant les autorisations. Si vous avez assez d'espace de stockage sur le RasPi, vous pouvez simplement stocker les fichiers de sauvegarde sous forme de fichiers ordinaires. Ensuite, vous pouvez avoir un script qui les tar.gz si vous souhaitez conserver plusieurs sauvegardes antérieures.

Le serveur doit installer rsync. Cela fonctionnera sur SSH, vous utiliserez donc toujours l'authentification par clé publique et conserverez le cryptage. Vous devrez exécuter cette commande en tant que root et activer l'authentification par clé publique et les connexions SSH pour root afin de préserver les autorisations. Votre destination (ou au moins une destination temporaire) doit être un système de fichiers Linux. Si vous stockez ces sauvegardes sur une partition FAT ou NTFS (par exemple, sur la plupart des disques durs externes), vous pouvez créer un système de fichiers en boucle (voir http://www.walkernews.net/2007/07/01/). create-linux-loopback-file-system-on-disk-file / ) pour le stockage temporaire. Le fichier tar.gz peut être stocké sur n'importe quelle partition, car il conserve les autorisations par lui-même.

Un exemple de commande rsync:

rsync -a --delete --exclude=/dev --exclude=/sys --exclude=/proc --exclude=/tmp remoteserver.example.com:/ /path/to/backup/destination/

soyez prudent lorsque vous utilisez --delete, en particulier en tant que root! Il supprimera tous les fichiers de la destination. répertoire qui n’existe pas sur la source de sauvegarde. Vous ne devez utiliser --delete que lors de la synchronisation vers un répertoire de sauvegarde dédié utilisé uniquement pour ce VPS. Vous devez également vous assurer que votre script synchronisé sur la mauvaise destination (par exemple, si/path/to/backup/destination est déterminé par une variable Shell)

rsync ne transférera que les fichiers différents entre la source et la destination. Si vous avez des fichiers volumineux, il ne transfère que les parties du fichier qui ont été modifiées (pour que cela fonctionne, vous devez ajouter l'indicateur -c). Cela signifie que vous utilisez une bande passante minimale, mais cela demandera plus de ressources processeur et ralentira les temps de préparation de la resynchronisation, car les deux parties doivent d'abord contrôler les fichiers de somme de contrôle pour déterminer les blocs à transférer. Si vous utilisez l'indicateur -c et que vous avez des fichiers volumineux (tels que des fichiers de base de données) et/ou une connexion instable, pensez à ajouter --partial --append, qui vous permet de reprendre les transferts après une interruption de la connexion.

5
undecim