Outils pour utilisateurs

Outils du site


informatique:projets:sauvegarde_donnees

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
informatique:projets:sauvegarde_donnees [2017/09/03 06:13] alexisinformatique:projets:sauvegarde_donnees [2024/11/24 09:42] (Version actuelle) alexis
Ligne 1: Ligne 1:
 +{{tag>todo}}
 ====== Mise en place de sauvegardes ====== ====== Mise en place de sauvegardes ======
  
Ligne 117: Ligne 118:
 BACKUPDIR=$BACKUP/backup BACKUPDIR=$BACKUP/backup
 TEMPFILE=/tmp/$NAME".EHDD" TEMPFILE=/tmp/$NAME".EHDD"
 +USER=alexis
 +USERID=`id -u $USER`
 +BASH=`which bash`
 +
 +sudo -u $USER $BASH -c "DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/$USERID/bus notify-send -t 10000 -u normal -i /usr/share/icons/Adwaita/32x32/devices/drive-removable-media.png 'Backup started' 'Location: external drive.'"
  
 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 "DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/$USERID/bus notify-send -t 10000 -u normal -i /usr/share/icons/Adwaita/32x32/devices/drive-removable-media.png 'Backup done' 'Location: external drive.'"
 </code> </code>
  
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'identifiant unique d'un disque, il faut lancer la commande suivante :
 +<code bash>
 +ls -l /dev/disk/by-uuid
 +</code>
 +</WRAP>
 +
 +<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 <path>
 +</code>
 +</WRAP>
 +
  
 == 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'ensemble des fichiers montés avec rsync, 
 +  - Nettoie le système. 
 + 
 +<code bash> 
 +#!/bin/bash 
 + 
 +SSH_CONNECTION=<user>@<server> 
 +IDENTITY=/home/alexis/.ssh/<server> 
 +USER_NAME=backup 
 +MOUNT_POINT=/media/$USER_NAME 
 +MYSQL_HOST=<dbhost> 
 +MYSQL_USER=<dbuser> 
 +MYSQL_PASSWD=<dbpassword> 
 + 
 +USER=alexis 
 +USERID=`id -u $USER` 
 + 
 +sudo -u $USER /usr/bin/bash -c "DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/$USERID/bus notify-send -t 10000 -u normal -i /usr/share/icons/Adwaita/32x32/devices/drive-removable-media.png 'Backup started' 'Distant to internal drive.'" 
 + 
 +# Extract crontab 
 +ssh -i $IDENTITY $SSH_CONNECTION "crontab -l" > /home/$USER_NAME/crontab 
 + 
 +# Dump databases 
 +dbs[0]=<db> 
 +… 
 +dbs[n]=<db> 
 + 
 +for i in "${dbs[@]}" 
 +do 
 +    ssh -i $IDENTITY $SSH_CONNECTION "mysqldump --skip-comments --disable-keys --user=$MYSQL_USER --password=$MYSQL_PASSWD --host $MYSQL_HOST --databases $i | gzip" > /home/$USER_NAME/$i.dump.sql.gz 
 +done 
 + 
 +# Save files 
 +mkdir $MOUNT_POINT 
 +sshfs $SSH_CONNECTION:www $MOUNT_POINT -o IdentityFile=$IDENTITY 
 + 
 +files[0]=<file> 
 +… 
 +files[n]=<file> 
 + 
 +for i in "${files[@]}" 
 +do 
 +    if [[ -d $MOUNT_POINT/$i ]]; then 
 +        mkdir -p /home/$USER_NAME/$i 
 +    fi 
 +    rsync -azq --delete --force $MOUNT_POINT/$i /home/$USER_NAME/$(dirname $i) 
 +done 
 + 
 +umount $MOUNT_POINT 
 +rmdir $MOUNT_POINT 
 + 
 +sudo -u $USER /usr/bin/bash -c "DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/$USERID/bus notify-send -t 10000 -u normal -i /usr/share/icons/Adwaita/32x32/devices/drive-removable-media.png 'Backup done' 'Distant to internal drive.'" 
 +</code> 
 + 
 +Comme pour les autres scripts, j'ai laissé systemd s'occuper du déclenchement du script. J'ai créé le fichier ''/etc/systemd/system/distant.backup.service'' avec le contenu suivant : 
 +<code ini> 
 +[Unit] 
 +Description=Backup distant on internal disk 
 +Requires=home.mount 
 +After=home.mount 
 + 
 +[Service] 
 +ExecStart=/home/alexis/Personnalisation/Scripts/Automatic.Backup.Distant.sh 
 +Type=oneshot 
 + 
 +[Install] 
 +WantedBy=graphical.target 
 +</code> 
 + 
 +Cependant, je voulais le lancer un peu en différé par rapport à la séquence de démarrage. J'ai donc créé le fichier ''/etc/systemd/system/distant.backup.timer'' avec le contenu suivant : 
 +<code ini> 
 +[Unit] 
 +Description=Run distant backup on boot 
 + 
 +[Timer] 
 +OnBootSec=30min 
 + 
 +[Install] 
 +WantedBy=timers.target 
 +</code> 
 + 
 +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" /media/backup/ /tmp/OldBackup rdiff-backup -r "Fri Oct 22 21:29:12 2010" /media/backup/ /tmp/OldBackup
 </code> </code>
 +
 +<WRAP todo>
 +Liens à étudier :
 +  * [[http://linuxfr.org/news/r-evolutions-dans-le-monde-de-la-sauvegarde-de-donnees|(R)évolutions dans le monde de la sauvegarde de données - LinuxFr.org]]
 +  * [[http://www.areca-backup.org/|Areca Backup - Official Website]]
 +  * [[https://www.backblaze.com/b2/cloud-storage.html|B2 Cloud Storage: The Lowest Priced Online File Storage]]
 +  * [[https://www.borgbackup.org/|BorgBackup – Deduplicating archiver with compression and authenticated encryption]]
 +  * [[http://sebsauvage.net/wiki/doku.php?id=borgbackup|borgbackup [Wiki de sebsauvage.net]]]
 +  * [[https://www.blog-libre.org/2016/08/21/borgbackup-borg-pour-les-intimes/|BorgBackup, borg pour les intimes]]
 +  * [[https://www.borgbase.com/|BorgBase - Secure hosting for your BorgBackup Repos]]
 +  * [[https://github.com/bup/bup|bup: It backs things up]]
 +  * [[http://blog.rom1v.com/2013/08/duplicity-des-backups-incrementaux-chiffres/|Duplicity : des backups incrémentaux chiffrés – ®om's blog]]
 +  * [[http://duplicity.nongnu.org/|duplicity: Main]]
 +  * [[https://acha.ninja/blog/encrypted_backup_shootout/|Encrypted Backup Shootout]]
 +  * [[https://blog.genma.fr/?Des-interfaces-graphiques-a-Borg|genma : Des interfaces graphiques à Borg ? · planet-libre.org]]
 +  * [[https://linuxfr.org/news/installer-borgbackup-sur-un-nas|Installer BorgBackup sur un NAS]]
 +  * [[http://www.sauvegardedefichiers.fr/respecter-la-regle-de-sauvegarde-3-2-1-pour-ne-pas-perdre-ses-donnees00733|Respecter la règle de sauvegarde 3-2-1 pour ne pas perdre ses données - Sauvegarde de fichiers]]
 +  * [[https://blog.genma.fr/?Retour-d-experience-avec-Borg-comme-outil-de-sauvegarde|Retour d’expérience avec Borg comme outil de sauvegarde - Le blog de Genma]]
 +  * [[http://zythom.blogspot.fr/2014/12/la-recuperation-de-donnees-faites-la.html|Zythom: La récupération de données, faites la vous-même]]
 +</WRAP>
 +
informatique/projets/sauvegarde_donnees.1504444433.txt.gz · Dernière modification : 2017/09/03 06:13 de alexis