Il y a quelques semaines, je suis passé d'un serveur dédié à un VPS. Maintenant que tout fonctionne bien sur le VPS, je voudrais arrêter le serveur dédié et fermer mon compte avec la société d'hébergement.
Pour la tranquillité d'esprit et pour être plus sûr, je voudrais faire une sauvegarde complète du serveur avant de l'arrêter.
Le mieux serait une sauvegarde que je pourrais parcourir si je trouve que j'ai besoin de quelque chose dans la sauvegarde.
Quelle serait la meilleure solution en ligne de commande?
Mise à jour:
Moyen: réseau
Le meilleur outil à utiliser pour cela est probablement le vidage, qui est un outil Linux standard et vous donnera l'ensemble du système de fichiers. Je ferais quelque chose comme ça:
/sbin/dump -0uan -f - / | gzip -2 | ssh -c blowfish [email protected] dd of=/backup/server-full-backup-`date '+%d-%B-%Y'`.dump.gz
Cela fera un vidage du système de fichiers de/(assurez-vous que vous n'avez pas besoin de vider d'autres montages!), Compressez-le avec gzip et transférez-le sur un serveur distant (backupserver.example.com), en le stockant dans/backup/. Si vous devez ultérieurement parcourir la sauvegarde que vous utilisez restaurer:
restore -i
Une autre option, si vous n'avez pas accès au vidage, est d'utiliser tar et de faire quelque chose comme
tar -zcvpf /backup/full-backup-`date '+%d-%B-%Y'`.tar.gz --directory / --exclude=mnt --exclude=proc --exclude=tmp .
Mais tar ne gère pas non plus les modifications du système de fichiers.
Si vous souhaitez effectuer une sauvegarde de Linux vers Linux, je n'utiliserais pas de vidage, car cela n'est pas pratique lorsque vous devez accéder à quelque chose dans le fichier de sauvegarde. Il suffit d'utiliser rsync
sur SSH pour faire une sauvegarde complète du système dans la plupart des cas:
rsync -aAXv --delete-after --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} / user@server:backup-folder
Cela gardera tout important et vous permettra de parcourir la sauvegarde sans étapes supplémentaires.
Vous voudrez peut-être ajouter l'option
--delete
De rsync si vous l'exécutez plusieurs fois dans le même dossier de sauvegarde. Dans ce cas, assurez-vous que le chemin source ne se termine pas par/*
, Sinon cette option n'aura d'effet que sur les fichiers à l'intérieur des sous-répertoires du répertoire source, mais elle n'aura aucun effet sur les fichiers résidant directement à l'intérieur le répertoire source.
J'utilise la commande décrite ci-dessus à partir de pehrs, mais modifiée pour une utilisation ftp. Échantillon Crontab:
30 3 1 * * Sudo /sbin/dump -0uan -f server-full-backup-root-`date '+%d-%B-%Y'`.dump / && gzip -1 /<path_to_backup_file>/server-full-backup-root-`date '+%d-%B-%Y'`.dump
50 * * * * lftp -f upload.x
upload.x contient les informations d'identification ftp et les règles de téléchargement:
open -u user,password -p 21 192.168.1.1
mirror -c -e -R /<path_to_backup_folder> /<path_to_remote_folder_without_trailing_slash>
exit
Remarque 1: lftp peut entraîner une utilisation élevée du processeur lorsque la destination est inaccessible lors de la tentative de reconnexion. Étant donné que de nombreux VPS d'hébergement peuvent être réinitialisés dans de tels cas, je suggère de surveiller la charge du processeur pour tuer le processus lftp en empêchant l'arrêt du serveur par le propriétaire de l'hôte. Un exemple de charge moyenne> 1,33 pour les processus lftp (et dropbox). Malheureusement, je ne me souviens pas de la source du code initial, grâce à quelqu'un:
Crontab */5 * * * * /home/cms/cron/loadmon.sh
#!/bin/bash
FROM_EMAIL_ADDRESS=cms
trigger=1.33
load=`cat /proc/loadavg | awk '{print $1}'`
response=`echo | awk -v T=$trigger -v L=$load 'BEGIN{if ( L > T){ print "greater"}}'`
if [[ $response = "greater" ]]
then
killall dropbox lftp
Nice -n 19 sh /cms/.dropbox-dist/dropboxd
sar -q | mailx -s "High load on server - [ $load ]" r***[email protected]
fi
Remarque 2: l'utilitaire de vidage peut ne pas fonctionner sur OpenVZ VPS ou certains autres serveurs virtuels.
Sur quel support allez-vous stocker la sauvegarde? Si vous sauvegardez sur le réseau, je monterais sshfs/nfs ma destination sur le serveur source et exécuter quelque chose comme:
tar cvjf /<remote_mnt>/<point>/source-030810-full.tar.bz2 /* --exclude=/proc --exclude=/dev --exclude=/sys --exclude=/tmp --exclude=/<remote_mnt>
Notez que cela n'a pas été testé, juste ma pensée générale que vous voudrez peut-être exclure plus ou moins que cela.
avez-vous entendu parler de Bacula?
Bacula est un ensemble de programmes informatiques Open Source, prêts pour l'entreprise, qui vous permettent (ou à l'administrateur système) de gérer la sauvegarde, la récupération et la vérification des données informatiques sur un réseau d'ordinateurs de différents types. Bacula est relativement facile à utiliser et efficace, tout en offrant de nombreuses fonctionnalités avancées de gestion du stockage qui facilitent la recherche et la récupération de fichiers perdus ou endommagés. En termes techniques, il s'agit d'un programme de sauvegarde basé sur un réseau Open Source, prêt pour l'entreprise.