J’ai trouvé ma solution, elle est basée sur 2 composants du même développeur:
- Auto-backup pour gérer les sauvegardes et leur rétention
- rclone backup pour gérer la duplication des sauvegardes sur d’autres support, y compris cloud.
(A ne pas confondre avec un autre dépôt appelé rclone GitHub - ViViDboarder/hassio-addon-rclone: An rclone addon to sync snapshots to a remote device )
1/ Auto Backup me permet de :
- faire des sauvegardes journalière partielles que je conserve 7 jours (7 versions)
- faire des sauvegardes hebdomadaires full que je garde 1 mois (4 versions)
via 2 automatisations:
- journalière:
alias: Maintenance Backup - 02H00 - Full Backup Daily not Monday 7 copies
description: ""
trigger:
- platform: time
at: "02:00:00"
condition:
- condition: time
weekday:
- tue
- wed
- thu
- fri
- sat
- sun
action:
- service: auto_backup.backup_full
data:
name: "DailyBackup: {{ now().strftime('%A, %B %-d, %Y') }}"
keep_days: 7
exclude:
folders:
- share
- media
mode: single
- hebdomadaire:
alias: Maintenance Backup - 02H00 - Full Backup Monday 4 copies
description: ""
trigger:
- platform: time
at: "02:00:00"
condition:
- condition: time
weekday:
- mon
action:
- service: auto_backup.backup_full
data:
name: "WeeklyBackup: {{ now().strftime('%A, %B %-d, %Y') }}"
keep_days: 28
mode: single
2/ rclone backup
rclone est un superbe utilitaire qui permet de gérer des fichiers (synchronisation/copie/suppression/etc.) sur tout type de support local (local, Samba, ftp ou cloud (Google, Amazon, pcloud, etc.)
Rclone helps you:
- Backup (and encrypt) files to cloud storage
- Restore (and decrypt) files from cloud storage
- Mirror cloud data to other cloud services or locally
- Migrate data to the cloud, or between cloud storage vendors
- Mount multiple, encrypted, cached or diverse cloud storage as a disk
- Analyse and account for data held on cloud storage using lsf, ljson, size, ncdu
- Union file systems together to present multiple local and/or cloud file systems as one
Je l’utilise pour synchroniser mes backup en local sur un PC Windows via SAMBA et à distance sur un cloud pcloud avec chiffrement des données.
Concrètement:
- je synchronise (sync) mon répertoire /backup sur un PC Windows via SAMBA. J’ai une automatisation Home Assistant qui fait un WOL (Wake-On-LAN) qui réveille le PC avant la sauvegarde, ceci n’étant pas géré par rclone.
- je copie (copy) mes sauvegardes qui vont être chiffrées (crypt) à la volée sur pcloud en conservant 7 jours les fichiers journaliers et 30 jours les fichiers hebdomadaires
- je supprime (delete) les versions qui ont plus de x jours
L’installation n’est plas des plus triviales car elle nécessite 2 étapes:
- créer le fichier rclone.conf (à placer dans /config) qui définit les périphériques de stockage
- créer les jobs rclone (synchronistaion, copie, suppression) entre tous les supports.
Personellement, j’ai installé rclone (un simple exécutable Rclone downloads ) sous Windows pour créer le fichier rclone.conf via la commande rclone rcd --rc-web-gui
rclone.conf:
[smb_mediacenter]
type = smb
host = 192.168.100.111
user = medianet
pass = Dxxxxxxxxxxxx8973JbjD9hs9Y5r
[pcloud]
type = pcloud
username = email@provider.fr
token = {"access_token":"KLJDxxxxxxxxxxxxkjl_lkdkljd","token_type":"bearer","expiry":"0001-01-01T00:00:00Z"}
hostname = api.pcloud.com
[pcloud_crypt]
type = crypt
remote = pcloud:/
directory_name_encryption = false
password = LG-lxkljekjekJZKxxxxxxxxxxxkjEKljElkje3
filename_encryption = off
J’ai recopié le fichier rclone.conf (voir la commande rclone cong file pour le répertoire) dans le répertoire /config de HA
J’ai paramétré le job rclone sous HA de la façon suivante (référence pour la syntaxe à utiliser):
- name: Sync Daily & Weekly Backups mediacenter
schedule: 01 04 * * *
command: sync
sources:
- /backup
destination: smb_mediacenter:/d/sauvegardes
include: []
exclude: []
flags: {}
- name: Copy Daily & Weekly Backups pcloud & pcloud crypt
schedule: 02 04 * * *
command: copy
sources:
- /backup
destinations:
- pcloud:/sauvegardes_ha_sync
- pcloud_crypt:/sauvegardes_ha_sync_crypt
include: []
exclude: []
flags:
"--max-age": 7d
- name: Delete pcloud Daily Backups > 7 days
schedule: 00 05 * * *
command: delete
sources:
- pcloud:/sauvegardes_ha_sync
include:
- DailyBackup*.tar
exclude: []
flags:
"--min-age": 7d
"--ignore-case": null
- name: Delete pcloud crypt Daily Backups > 7 days
schedule: 00 05 * * *
command: delete
sources:
- pcloud_crypt:/sauvegardes_ha_sync_crypt
include:
- DailyBackup*.tar
exclude: []
flags:
"--min-age": 7d
"--ignore-case": null
- name: Delete pcloud Weekly Backups > 30 days
schedule: 05 05 * * *
command: delete
sources:
- pcloud:/sauvegardes_ha_sync
include:
- DailyBackup*.tar
exclude: []
flags:
"--min-age": 30d
"--ignore-case": null
- name: Delete pcloud crypt Weekly Backups > 30 days
schedule: 05 05 * * *
command: delete
sources:
- pcloud_crypt:/sauvegardes_ha_sync_crypt
include:
- DailyBackup*.tar
exclude: []
flags:
"--min-age": 30d
"--ignore-case": null
Voilà, cette solution fait exactement ce que je voulais avec beaucoup de souplesse.
L’interface rclone:
NOTE: J’ai testé DUPLICATI qui semblait faire le job mais qui sauvegarde les fichiers sous un format propriétaire, ce qui ne me convenait pas.