©
. Document créé le 5 janvier 2011 , mis à jour le 25 janvier 2011.Ce n'est pas pour me vanter, mais il fait rudement chaud. Eugène Labiche
Accueil du site > Astuces > Unix > Script de sauvegarde en SSH
Objectif : sauvegarder un répertoire de travail sur un serveur distant via ssh.
Le plus simple est de prendre le ou les répertoires concernés, de les archiver en un fichier plat, de le compresser et d’envoyer le tout sur l’entrée standard de ssh qui recopie ce résultat dans le fichier de destination.
C’est ce que propose le script ci-dessous.
Seul contrainte : créer une clé publique afin d’éviter à devoir entrer le mot de passe à la connexion, et permettre l’emploi de ce script via le cron. Lire si besoin le billet Se connecter par SSH sans taper de mot de passe.
Ne pas oublier de créer le dossier de réception, sur la machine distante.
Vous devez enfin, dans ce script, préciser :
#!/bin/sh
# Script pour backup sur serveur distant via ssh
# (c) 2011: cpaulus at quesaco.org
# Licence MIT + GNU GPL, etc.
# http://www.quesaco.org/Script-de-sauvegarde-en-SSH
# @version: Tue Jan 25 11:32:15 CET 2011
# Le repertoire a sauvegarder :
TARGET_FOLDER="/usr/local/www"
# Nom de la machine distante
# du style "login@server.exemple.com"
BACKUP_MACHINE="login@server.exemple.com"
# Repertoire de destination
# Attention a creer ce repertoire distant avec les bons droits
BACKUP_FOLDER="backups/"
# tester si le repertoire distant existe
RES=`ssh "$BACKUP_MACHINE" "if [ -d $BACKUP_FOLDER ]; then echo OK; fi"`
if [ $? -eq 0 ]
then
if [ "$RES" != "OK" ]
then
echo "Dossier de reception manquant !"
exit
fi
else
exit
fi
# la date au format court
# pour completer le nom du fichier
TODAY=`date "+%Y%m%d"`
# Aller dans le repertoire cible
cd "$TARGET_FOLDER"
for ii in *
do
# Ne prendre en compte
# que les dossiers
if [ -d $ii ]
then
# Construire le nom du fichier de destination
DEST="$BACKUP_FOLDER$ii-$TODAY.tgz"
echo "Backuping $ii -> $DEST"
# archiver le fichier (tar) compresse'
# envoyer le resultat sur la sortie standard
# le pipe ssh recopie STDOUT dans sa destination
tar czf - "$ii" | ssh "$BACKUP_MACHINE" "cat > $DEST"
fi
# Testez votre configuration.
# si test OK, placer le exit suivant en commentaire
# pour activer la copie complete du repertoire
exit 0
done
Les forums sont fermés.