informatique:projets:sauvegarde_donnees
Différences
Ci-dessous, les différences entre deux révisions de la page.
Prochaine révision | Révision précédente | ||
informatique:projets:sauvegarde_donnees [2017/07/06 15:01] – créée alexis | informatique:projets:sauvegarde_donnees [2024/11/24 09:42] (Version actuelle) – alexis | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | {{tag> | ||
====== Mise en place de sauvegardes ====== | ====== Mise en place de sauvegardes ====== | ||
Ligne 13: | Ligne 14: | ||
<WRAP info> | <WRAP info> | ||
- | Pour l' | + | Pour l' |
</ | </ | ||
Ligne 117: | Ligne 118: | ||
BACKUPDIR=$BACKUP/ | BACKUPDIR=$BACKUP/ | ||
TEMPFILE=/ | TEMPFILE=/ | ||
+ | USER=alexis | ||
+ | USERID=`id -u $USER` | ||
+ | BASH=`which bash` | ||
+ | |||
+ | sudo -u $USER $BASH -c " | ||
echo "-= Wait until HDD is mounted =-" | echo "-= Wait until HDD is mounted =-" | ||
Ligne 141: | Ligne 147: | ||
echo "-= Clean system =-" | echo "-= Clean system =-" | ||
rm $TEMPFILE | rm $TEMPFILE | ||
+ | |||
+ | sudo -u $USER $BASH -c " | ||
</ | </ | ||
Ligne 161: | Ligne 169: | ||
À ce moment, il ne reste plus qu'à activer le service pour qu'il soit utilisable au démarrage de la machine. | À ce moment, il ne reste plus qu'à activer le service pour qu'il soit utilisable au démarrage de la machine. | ||
+ | |||
+ | <WRAP info> | ||
+ | Pour trouver l' | ||
+ | <code bash> | ||
+ | ls -l / | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | <WRAP info> | ||
+ | Pour encoder un chemin en une chaîne de caractères utilisable dans les fichiers de configuration de systemd, il faut lancer la commande suivante : | ||
+ | <code bash> | ||
+ | systemd-escape --path < | ||
+ | </ | ||
+ | </ | ||
+ | |||
== Sauvegarde des données locales sur un disque délocalisé == | == Sauvegarde des données locales sur un disque délocalisé == | ||
Ligne 166: | Ligne 189: | ||
== Sauvegarde des données distantes == | == Sauvegarde des données distantes == | ||
- | FIXME | + | La quatrième étape fut de sauvegarder les données de mes services en ligne (RSS, photos, etc.) sur le disque local. |
+ | Pour cela, j'ai fait plusieurs tests peu concluants ((Copie en ligne dans un dossier puis montage SSHFS du dossier puis rsync → toute la donnée est copiée à chaque fois))((Rsync à travers SSH → refus de connexion après un certain temps))((Mysqldump en local → temps de traitements trop long)) avant de trouver quelque chose qui fonctionne. | ||
+ | |||
+ | Finalement, j'ai écrit un script qui : | ||
+ | - Sauvegarde les données du cron, | ||
+ | - Lance une sauvegarde des bases de données à distance et qui les compresse, | ||
+ | - Monte le disque distant en local avec SSHFS, | ||
+ | - Synchronise l' | ||
+ | - Nettoie le système. | ||
+ | |||
+ | <code bash> | ||
+ | # | ||
+ | |||
+ | SSH_CONNECTION=< | ||
+ | IDENTITY=/ | ||
+ | USER_NAME=backup | ||
+ | MOUNT_POINT=/ | ||
+ | MYSQL_HOST=< | ||
+ | MYSQL_USER=< | ||
+ | MYSQL_PASSWD=< | ||
+ | |||
+ | USER=alexis | ||
+ | USERID=`id -u $USER` | ||
+ | |||
+ | sudo -u $USER / | ||
+ | |||
+ | # Extract crontab | ||
+ | ssh -i $IDENTITY $SSH_CONNECTION " | ||
+ | |||
+ | # Dump databases | ||
+ | dbs[0]=< | ||
+ | … | ||
+ | dbs[n]=< | ||
+ | |||
+ | for i in " | ||
+ | do | ||
+ | ssh -i $IDENTITY $SSH_CONNECTION " | ||
+ | done | ||
+ | |||
+ | # Save files | ||
+ | mkdir $MOUNT_POINT | ||
+ | sshfs $SSH_CONNECTION: | ||
+ | |||
+ | files[0]=< | ||
+ | … | ||
+ | files[n]=< | ||
+ | |||
+ | for i in " | ||
+ | do | ||
+ | if [[ -d $MOUNT_POINT/ | ||
+ | mkdir -p / | ||
+ | fi | ||
+ | rsync -azq --delete --force $MOUNT_POINT/ | ||
+ | done | ||
+ | |||
+ | umount $MOUNT_POINT | ||
+ | rmdir $MOUNT_POINT | ||
+ | |||
+ | sudo -u $USER / | ||
+ | </ | ||
+ | |||
+ | Comme pour les autres scripts, j'ai laissé systemd s' | ||
+ | <code ini> | ||
+ | [Unit] | ||
+ | Description=Backup distant on internal disk | ||
+ | Requires=home.mount | ||
+ | After=home.mount | ||
+ | |||
+ | [Service] | ||
+ | ExecStart=/ | ||
+ | Type=oneshot | ||
+ | |||
+ | [Install] | ||
+ | WantedBy=graphical.target | ||
+ | </ | ||
+ | |||
+ | Cependant, je voulais le lancer un peu en différé par rapport à la séquence de démarrage. J'ai donc créé le fichier ''/ | ||
+ | <code ini> | ||
+ | [Unit] | ||
+ | Description=Run distant backup on boot | ||
+ | |||
+ | [Timer] | ||
+ | OnBootSec=30min | ||
+ | |||
+ | [Install] | ||
+ | WantedBy=timers.target | ||
+ | </ | ||
+ | |||
+ | C'est ce dernier qu'il faut activer pour qu'il soit utilisable au démarrage de la machine. | ||
== Restauration de données == | == Restauration de données == | ||
Ligne 207: | Ligne 318: | ||
rdiff-backup -r "Fri Oct 22 21:29:12 2010" / | rdiff-backup -r "Fri Oct 22 21:29:12 2010" / | ||
</ | </ | ||
+ | |||
+ | <WRAP todo> | ||
+ | Liens à étudier : | ||
+ | * [[http:// | ||
+ | * [[http:// | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | * [[http:// | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | * [[http:// | ||
+ | * [[http:// | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | * [[http:// | ||
+ | * [[https:// | ||
+ | * [[http:// | ||
+ | </ | ||
+ |
informatique/projets/sauvegarde_donnees.1499378486.txt.gz · Dernière modification : 2017/07/06 15:01 de alexis