J'exécute un script Python personnalisé script qui utilise rsync pour sauvegarder mon dossier personnel (moins la corbeille, etc.) dans un dossier nommé "current" sur un disque dur de sauvegarde séparé (connecté par USB), puis la commande copy (cp) pour copier tout ce qui se trouve dans "current" dans un dossier horodaté également sur le même disque dur. Ce qui est bien, c'est que chaque instantané a chaque dans votre dossier personnel tel qu'il était à ce moment-là et mais le disque dur ne se remplit pas inutilement. Comme la plupart des fichiers ne changent jamais, il n'y a jamais qu'une seule copie réelle de ces fichiers sur le disque dur. Toute autre référence à ce fichier est un lien. Et si une version plus récente d'un fichier est ajoutée à "current", alors tous les instantanés pointant vers l'ancienne version pointent automatiquement vers une seule version de l'original. Les systèmes de fichiers des disques durs modernes s'en chargent eux-mêmes. Bien qu'il y ait toutes sortes de raffinements dans le script, les commandes principales sont simples. Voici quelques-uns des ingrédients clés :
exclusion_path = "/home/.../exclusions.txt" # don't back up trash etc
media_path = "/media/... # a long path with the HDD details and the "current" folder
rsync -avv --progress --delete --exclude-from=exclusion_path /home/username/ media_path
current = "..." # the "current" folder on the HDD
dest = "..." # the timestamped folder on the HDD
cp -alv current dest
J'avais aussi des besoins particuliers. Comme j'ai plusieurs images disques massives (par exemple 60 Go) de VirtualBox, je ne souhaite avoir qu'une seule copie de celles-ci, et non des versions instantanées. Même un disque dur de 1 ou 2 To a des limites.
Voici le contenu de mon fichier d'exclusions. Le fichier est très sensible aux barres obliques manquantes, etc :
/.local/share/Trash/
/.thumbnails/
/.cache/
/Examples/