Il y a quelques temps, j’ai publié des articles qui décrivaient la marche à suivre pour effectuer un backup de la carte SD d’un Raspberry Pi :
Problème, en cas de cambriolage, d’incendie ou de défauts électriques comme la foudre, on peut perdre le Pi et le HD contenant les backups.
La solution décrite ci-dessous va nous permettre d’uploader la sauvegarde vers le cloud en FTP grâce à la commande cURL.
Nous allons utiliser la commande CURL
pour envoyer le fichier backup-YYYYmmdd-hhmm.gz
vers le serveur FTP.
Dans notre exemple, nous utiliserons le serveur ftp.netcourrier.com
sur lequel j’ai un espace payant.
$ sudo curl -T /media/RPi-USB-Dsk/Backups/backup-YYYYmmdd-hhmm.gz ftp://ftp.netcourrier.com/CheminVersBackup/ --user Login:Password --disable-epsv
L’option -T
permet d’uploader un fichier.
On indique ensuite le chemin vers le fichier d’origine.
Puis, le chemin vers le dossier de destination.
Le login et le mot de passe viennent après --user
. On peut également utiliser l’abréviation -u Login:Password
en début de commande.
Attention ! : Si le login contient un @
(Ex: une adresse mail comme login) on passera par un script dans lequel on définira des constantes :
log=login@netcourrier.com pass=Password
Elles seront reprises comme ceci dans la commande du script :
curl -T /media/RPi-USB-Dsk/Backups/backup-YYYYmmdd-hhmm.gz ftp://ftp.netcourrier.com/CheminVersBackup/ --user $log:$pass --disable-epsv
L’option --disable-epsv
indique au serveur d’entamer une session FTP passive plutôt qu’active.
Pour supprimer un fichier la commande est similaire :
curl ftp://ftp.netcourrier.com/Backups_RPi/ -Q "-DELE backup-$(date --date="21 days ago" +%Y%m%d)-0330.gz" --user $log:$pass --disable-epsv
Là, on va supprimer un backup âgé de 3 semaines pour ne garder que les 3 plus récents sur le serveur.
Afin de ne pas monopoliser toute la bande passante montante, on peut limiter la vitesse de transfert avec cette option à la fin de la commande :
--limit-rate <speed>
Par défaut les valeurs <speed>
sont données en octets/sec. Mais on peut définir le vitesse en ko/sec ou mo/sec avec k
ou m
:
--limit-rate 50k
Pour 50 ko/sec.
Je vous suggère de reprendre le script réalisé dans cet article et d’y ajouter quelques lignes à la fin.
Pour rappel, on édite le fichier comme ceci :
$ sudo nano /home/pi/RPi-Backup.sh
#!/bin/sh echo "Exécution du script de Backup" echo "=============================" echo "$(date +%Y%m%d-%T)" echo # Mémorisation de l'heure du début du backup hback=$(date +%H%M) # Arret des services echo echo "$(date +%Y%m%d-%T) : Arret des services" echo sudo service minidlna stop sudo service transmission-daemon stop sudo service nginx stop sudo service mysql stop sudo service php5-fpm stop sudo service fr24feed stop sleep 3 # Suppression des paquets périmés echo echo "$(date +%Y%m%d-%T) : Suppression des paquets périmés" echo sudo apt-get autoclean sleep 3 # Suppression du contenu de la corbeille de Root echo echo "$(date +%Y%m%d-%T) : Suppression du contenu de la corbeille de Root" echo sudo rm -r -f -v /root/.local/share/Trash/files/* # Suppression du contenu de la corbeille de Pi echo echo "$(date +%Y%m%d-%T) : Suppression du contenu de la corbeille de Pi" echo sudo rm -r -f -v /home/pi/.local/share/Trash/files/* sleep 3 # Suppression du contenu de UpDraft Plus echo echo "$(date +%Y%m%d-%T) : Suppression du contenu de UpDraft Plus" echo sudo rm -r -f -v /var/www/wordpress/wp-content/updraft/*.gz sleep 3 # Remplissage de l'espace libre par des zéros echo echo "$(date +%Y%m%d-%T) : Remplissage de l'espace libre par des zéros" echo sudo sync sudo dd if=/dev/zero of=/home/pi/Desktop/zero.small.file bs=1024 count=102400 sudo dd if=/dev/zero of=/home/pi/Desktop/zero.file bs=1024 sudo sync sleep 30 sudo sync sleep 3 # Suppression des fichiers de zéros echo echo "$(date +%Y%m%d-%T) : Suppression des fichiers de zéros" echo sudo rm -f -v /home/pi/Desktop/zero.small.file sudo rm -f -v /home/pi/Desktop/zero.file sleep 3 # Exécution du backup echo echo "$(date +%Y%m%d-%T) : Exécution du backup" echo sudo dd bs=4M if=/dev/mmcblk0 | gzip > /media/RPi-USB-Dsk/Backups/backup-`date +%Y%m%d`-$hback.gz sleep 3 # Suppression du backup d'il y a 26 semaine (182 jours ou 6 mois) echo echo "$(date +%Y%m%d-%T) : Suppression du backup d'il y a 26 semaine (182 jours ou 6 mois)" echo sudo rm -f -v /media/RPi-USB-Dsk/Backups/backup-$(date --date="182 days ago" +%Y%m%d)-0330.gz sleep 3 # Reprise des services echo echo "$(date +%Y%m%d-%T) : Reprise des services" echo sudo service php5-fpm start sudo service mysql start sudo service nginx start sudo service transmission-daemon start sudo service minidlna start sudo service fr24feed start sleep 3 # Upload vers le serveur FTP echo echo "$(date +%Y%m%d-%T) : Upload vers le serveur FTP" echo log=login@netcourrier.com pass=Password sudo curl -T /media/RPi-USB-Dsk/Backups/backup-`date +%Y%m%d`-$hback.gz ftp://ftp.netcourrier.com/CheminVersBackup/ --user $log:$pass --disable-epsv --limit-rate 50k # Suppression d'un ancien backup sur le serveur FTP # On garde juste les 3 derniers echo echo "$(date +%Y%m%d-%T) : Suppression d'un ancien backup sur le serveur FTP" echo log=login@netcourrier.com pass=Password sudo curl ftp://ftp.netcourrier.com/Backups_RPi/ -Q "-DELE backup-$(date --date="21 days ago" +%Y%m%d)-0330.gz" --user $log:$pass --disable-epsv --limit-rate 50k sleep 3 echo echo "$(date +%Y%m%d-%T) : Fin du script Backup.sh"
Attention ! Le script est à adapter en fonction de votre configuration comme décrit sur cette page.
Si vous ne possédez pas d’espace de stockage FTP dans le cloud et que vous ne voulez pas garder vos backups plus de 30 jours, Free propose une altenative intéressante. Accessible à tous. Sans inscription. Même si vous n’êtes pas client chez eux.
Il est possible d’uploader des fichiers de 10Go max sur le serveur ftp://dl.free.fr .
Login : Votre adresse email
Pass : Au choix
Dès que l’upload sera terminé, Free vous enverra, à l’adresse mail indiquée, un lien vers votre fichier. Celui-ci sera effacé après 30 jours.
On aura une ligne de ce genre dans le script du backup :
sudo curl -T /media/RPi-USB-Dsk/Backups/backup-`date +%Y%m%d`-$hback.gz ftp://dl.free.com/ --user $log:$pass --limit-rate 50k
--disable-epsv
n’est pas nécessaire avec le FTP de Free.
log='mail@domain.tld' pass='password' key='UnMotDePasseRobustePourOpenSSL' openssl enc -e -aes-256-cbc -pass pass:$key -in /media/RPi-USB-Dsk/Backups/backup-`date +%Y%m%d`-$hback.gz | curl -P - --insecure 'ftp://dl.free.fr:21/backup-`date +%Y%m%d`-$hback.gz.aes' --user $log:$pass -T - --limit-rate 2m
Et pour le déchiffrer sur Mac :
openssl enc -d -aes-256-cbc -in ~/Downloads/backup-20190603-0330.gz.aes -out ~/Desktop/backup-20190603-0330.gz -pass pass:UnMotDePasseRobustePourOpenSSL
On trouvera la solution chez devops-blog.
On édite le firewall :
$ sudo nano /etc/init.d/firewall
Et on y ajoute ces lignes :
# FTP (21) iptables -A OUTPUT -p tcp --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT iptables -A OUTPUT -p tcp --dport 20 -m state --state ESTABLISHED -j ACCEPT iptables -A OUTPUT -p tcp --sport 1024: --dport 1024: -m state --state ESTABLISHED,RELATED,NEW -j ACCEPT
5 ans ago ·
Merci pour cet utilitaire.
Comment utiliser le backup avec un PC W10.
5 ans ago ·
Bonjour,
Je ne suis pas un spécialiste de Windows 10…
Mais peut-être en installant Windows Subsystem for Linux (WSL) :
https://www.toolinux.com/?Comment-installer-le-terminal-Ubuntu-sur-Windows-10
Didier.