J'ai utilisé Cryptomator pendant assez longtemps pour gérer mes contenus. Son avantage est que les données locales nécessitent également un mot de passe pour y accéder. Une fois chiffrées, ces données peuvent être synchronisées vers Nutstore, Dropbox ou d'autres services cloud, avec un téléversement en temps réel après chaque modification.
Si vous stockez des fichiers qui ne nécessitent pas d'édition fréquente et que vous ajoutez ou remplacez principalement des ressources, je recommande vivement Cryptomator. Il est idéal pour sauvegarder des documents numérisés, des images et des tableaux.
Cependant, sous macOS, si vous utilisez des logiciels comme Obsidian pour gérer votre base de connaissances et que vous modifiez fréquemment vos fichiers, l'édition de texte avec Cryptomator devient peu pratique. Pour éviter les problèmes, je devais copier le contenu, le modifier, puis remplacer le fichier original, ce qui était assez fastidieux.
J'ai découvert par hasard Restic. Si vous souhaitez sauvegarder et chiffrer votre coffre-fort Obsidian pour l'envoyer vers un cloud ou une plateforme S3, Restic est parfaitement adapté.
Quick Start
Installation de Restic
macOS
$ brew install restic
Compatible avec la plupart des systèmes d'exploitation, voir : https://restic.readthedocs.io/en/latest/020_installation.html
Initialisation d'un dépôt local
Un dépôt est simplement un dossier qui stocke vos fichiers chiffrés. L'initialisation crée des métadonnées nécessaires.
$ restic init --repo ~/Documents/NoteE2EE
enter password for new repository:
enter password again:
created restic repository 0a40262533 at /Users/xxxxx/Documents/NoteE2EE
Please note that knowledge of your password is required to access
the repository. Losing your password means that your data is
irrecoverably lost.
N'oubliez pas votre mot de passe, car les données chiffrées seront irrécupérables en cas d'oubli.
Sauvegarde des données
Exécutez cette commande pour sauvegarder le dossier ~/Note dans le dépôt ~/Documents/NoteE2EE
$ restic -r ~/Documents/NoteE2EE backup ~/Documents/Note
À la première exécution, vous verrez le nombre de fichiers et répertoires sauvegardés, ainsi que l'ID du "snapshot" (instantané) créé.
La commande peut être exécutée plusieurs fois (chaque exécution crée un nouveau snapshot)
Comme les sauvegardes sont incrémentielles, ne vous inquiétez pas de l'espace disque.
Utilisez cette commande pour afficher la liste des snapshots dans le dépôt:
$ restic -r ~/Documents/NoteE2EE snapshots
Le dossier "NoteE2EE" contient vos données chiffrées. Vous pouvez le stocker en toute sécurité sur votre disque dur local, un disque externe ou un cloud, selon le principe 3-2-1, sans craindre de fuites de données.
Optimisation des paramètres de sauvegarde
$ restic -r ~/Documents/NoteE2EE backup ~/Documents/Note \
--pack-size 32 \
--exclude="*.tmp" \
--iexclude="*.LOG" \
--limit-upload 1024 \
--json
L'option --pack-size
permet de contrôler efficacement le nombre de fichiers cibles, évitant que les gros fichiers ne soient divisés en trop de petits fichiers. Les fichiers historiques ne sont pas affectés, seule la sauvegarde incrémentielle actuelle l'est.
En complément de --limit-upload
, il existe un paramètre --limit-download
pour limiter la vitesse de téléchargement.
Si vous développez des outils basés sur Restic, le paramètre --json
est très utile:
{"message_type":"status","percent_done":0,"total_files":29,"total_bytes":204482794}
{"message_type":"status","percent_done":0,"total_files":41,"total_bytes":333776710}
{"message_type":"status","percent_done":0,"total_files":41,"total_bytes":333776710}
{"message_type":"status","percent_done":0,"total_files":41,"total_bytes":333776710}
{"message_type":"status","percent_done":0,"total_files":41,"total_bytes":333776710}
{"message_type":"status","percent_done":0,"total_files":41,"total_bytes":333776710}
{"message_type":"status","percent_done":0,"total_files":41,"total_bytes":333776710}
{"message_type":"status","percent_done":0.2808864315308279,"total_files":41,"files_done":13,"total_bytes":333776710,"bytes_done":93753349}
{"message_type":"status","percent_done":1,"total_files":41,"files_done":41,"total_bytes":333776710,"bytes_done":333776710}
{"message_type":"summary","files_new":0,"files_changed":0,"files_unmodified":41,"dirs_new":0,"dirs_changed":2,"dirs_unmodified":8,"data_blobs":0,"tree_blobs":2,"data_added":756,"data_added_packed":608,"total_files_processed":41,"total_bytes_processed":333776710,"total_duration":5.552792709,"backup_start":"2025-04-02T18:30:04.949151+08:00","backup_end":"2025-04-02T18:30:10.501995+08:00","snapshot_id":"74e465ed71f7fb5b7abb562d4cb9d067f20d89a1a9f3ed4ed32a0bc73e8abab1"}
Ces données permettent de créer des barres de progression et d'afficher le volume des fichiers sauvegardés.
Plus de types de stockage (Backends)
La commande restic init --repo ~/Documents/NoteE2EE
a créé un dépôt local.
Voici un exemple pour un stockage compatible S3:
# Configuration des variables d'environnement
$ export AWS_ACCESS_KEY_ID=id7O9M0H****tXJ2romrN
$ export AWS_SECRET_ACCESS_KEY=bFA0dL0u********ndnxVcrwPh31u
$ export AWS_DEFAULT_REGION=cn-east-1
# Initialisation du dépôt et sauvegarde
$ restic -r s3:https://s3.bitiful.net/note-e2ee init
$ restic -r s3:https://s3.bitiful.net/note-e2ee --verbose backup ~/Documents/NoteE2EE
Note: Si la variable AWS_DEFAULT_REGION
n'est pas définie, us-east-1 sera utilisé par défaut.
Pour d'autres plateformes comme Amazon S3, Backblaze B2, Google Cloud, consultez: https://restic.readthedocs.io/en/latest/030_preparing_a_new_repo.html
Gestion des snapshots
Conservation des snapshots récents
Si vous exécutez backup
régulièrement, vous pouvez avoir trop de sauvegardes. Cette commande permet de ne conserver que les 7 derniers snapshots:
$ restic -r [chemin_du_dépôt] forget --keep-last 7 --prune
Étiquettes de snapshot
Vous pouvez spécifier plusieurs étiquettes lors de la sauvegarde (--tag "v1.0" --tag "daily"):
$ restic -r ~/Documents/NoteE2EE backup --tag "v1.0" ~/Documents/Note
Vous pouvez également modifier les étiquettes des snapshots existants:
# Ajouter une étiquette
$ restic -r ~/Documents/NoteE2EE tag --add "important" 8c5c9d50
# Supprimer une étiquette
$ restic -r ~/Documents/NoteE2EE tag --remove "important" 43547193
# Définir plusieurs étiquettes
$ restic -r ~/Documents/NoteE2EE tag --set "important,project2" a1ff1a78
Notez que l'ID du snapshot change après chaque modification.
Vérification de l'intégrité des sauvegardes
Les sauvegardes stockées sur le cloud ne sont pas garanties à 100% contre la perte ou la corruption. La commande check permet de vérifier l'intégrité:
$ restic -r ~/Documents/NoteE2EE check
Simulons maintenant une "corruption" en modifiant le nom d'un fichier dans le répertoire data de NoteE2EE, en ajoutant un underscore au début pour simuler une perte ou corruption:
En exécutant à nouveau la commande check, un message indique que le dépôt est anormal et nécessite une réparation, comme prévu:
Restauration d'un snapshot dans un répertoire spécifique
Visualisation des snapshots existants:
$ restic -r ~/Documents/NoteE2EE snapshots
Exportation d'un snapshot spécifique:
$ restic -r ~/Documents/NoteE2EE restore 5fcd966f --target ~/Downloads/NoteRestore/
5fcd966f est l'ID du snapshot, que vous pouvez trouver avec la commande snapshots. Le répertoire NoteRestore sera créé automatiquement s'il n'existe pas.
Si votre dépôt est volumineux et que vous souhaitez restaurer uniquement certains fichiers ou dossiers:
$ restic -r ~/Documents/NoteE2EE restore 5fcd966f --target ~/Downloads/NoteRestore/ --include Epub电子书
"Epub电子书" est un dossier situé à la racine du dépôt.
Utiliser copy plutôt que backup
Si vous n'avez qu'un seul dépôt chiffré, utilisez simplement backup à chaque fois. Mais si vous suivez le principe 3-2-1 avec plusieurs dépôts chiffrés, il n'est pas efficace d'exécuter backup plusieurs fois vers différents dépôts.
Dans ce cas, utilisez copy
, qui garantit une cohérence stricte des données avec d'excellentes performances:
$ restic init --repo ~/Documents/NoteE2EE-copy
$ restic -r ~/Documents/NoteE2EE-copy copy --from-repo ~/Documents/NoteE2EE
Résumé de l'IA (que je trouve pertinent):
Si vous devez synchroniser des données entre plusieurs dépôts Restic,
copy
est toujours le meilleur choix — il fonctionne comme un "transporteur de données" professionnel entre dépôts, tandis quebackup
est un "collecteur" orienté vers les données brutes.
Essayez Restic Browser
Si vous n'aimez pas les opérations en ligne de commande, essayez cet outil open source: emuell/restic-browser
Développé avec Rust + TypeScript, il ne pèse que quelques mégaoctets et offre uniquement des fonctions de lecture. Comme son nom "Browser" l'indique, il permet de parcourir les dépôts chiffrés et facilite la recherche de fichiers dans les snapshots.
Vous pourriez aussi avoir besoin d'Autorestic
Documentation: Autorestic Quick Start
Autorestic est un wrapper autour de l'étonnant restic. Bien qu'étant remarquable, l'interface en ligne de commande de restic peut être un peu intimidante et difficile à gérer si vous avez plusieurs emplacements différents que vous souhaitez sauvegarder vers plusieurs destinations. Cet utilitaire vise à faciliter ce processus 🙂
Autorestic est un wrapper développé autour de l'excellent outil restic. Bien que l'outil en ligne de commande restic soit exceptionnel, il peut devenir complexe et difficile à gérer lorsque vous devez synchroniser des sauvegardes de plusieurs emplacements vers différentes destinations. Cet utilitaire vise à simplifier ce processus, rendant la gestion des sauvegardes multi-cibles plus facile et plus agréable.
Installation
$ brew install autorestic
Fichier de configuration
Créez un fichier de configuration avec le contenu suivant:
version: 2
backends:
note_primary:
type: local
path: "~/Documents/NoteE2EE"
env:
RESTIC_PASSWORD: "your-restic-vault-passowrd"
note_backup:
type: local
path: "~/Documents/NoteE2EE-copy"
env:
RESTIC_PASSWORD: "your-restic-vault-passowrd"
locations:
notes:
from: "~/Documents/Note"
to:
- note_primary
- note_backup
options:
forget:
keep-last: 7
Modifiez les permissions du fichier de configuration (recommandé):
$ chmod 600 ~/.autorestic.yml
Location et Backend
Dans Autorestic, Location décrit le contenu et la destination de la sauvegarde (from / to), tandis que Backend définit la destination de sauvegarde.
Vérification de la configuration
$ autorestic check
Everything is fine.
Exécution manuelle de la sauvegarde
Sauvegarde complète:
$ autorestic backup -a
Sauvegarde d'une Location spécifique:
$ autorestic backup -l notes
Sortie:
Cette solution répond parfaitement à mes besoins actuels et est suffisamment facile à utiliser. Je mettrai à jour cet article après l'avoir utilisée pendant un certain temps si j'ai des compléments à ajouter.