Si vous publiez du contenu en ligne
- Ayez une copie locale de tout le contenu.
- Autant que possible, publiez de votre machine vers l’extérieur, le service, le serveur. Considérez que l’original est local et que le public n’accède qu’à une copie.
- Si 2 ne rentre pas dans votre démarche de publication, que vous publiez sur un serveur distant, créez un système automatisé de sauvegarde locale de tout le contenu (ainsi que les métadonnées) disponible sur le serveur.
- Si vous avez la possibilité, créez une 3ème copie de sauvegarde automatique sur un disque externe local.
- Si vous avez la possibilité, créez une copie automatique sur un serveur distant (qui n’est pas celle du contenu publié sur le serveur accessible au public).
- Avoir son nom de domaine est un atout bien qu’il entraîne un coût supplémentaire de location. Il vous permet une mobilité, une flexibilité pour l’accès public de votre contenu.
Pensées amicales à une personne qui a perdu tout son contenu soudainement bloqué par le service distant. (Mise à jour : le service a redonné accès au contenu).
ruissellement chez Karl
(et déjà repris chez Navire; il m’a juste devancé).
Je n’ai pas encore fait entièrement le nécessaire.
C’est en cours mais c’est lent car les idées fusent dans la tête et parfois, je ne reste pas concentré; je fais face à un manque de clarté; je suis interrompu.
J’avance, petit à petit.
J’ai commencé à mettre en place une stratégie de
backup.
Je dis bien commencé car elle n’est pas finie : il manque des documents et de l’automatisation
à 100%.
J’avance petit à petit.
Je dois rajouter qu, pour Hetzner Box Storage, l’adresse pour se connecter est
ssh://user_id@user_id.your-storagebox.de:23/./
Un dossier que je devrais encore finir
Le post est construit au fur et à mesure.
Je développerai essentiellement dans le cadre familliale.
Tout d’abord, un bon backup devrait suivre :
- la méthode 3-2-1, c’est-à-dire 3 copies sur 2 médias différents et sur un site externe;
- être automatisé/automatique;
- être vérifiable/testé;
- être insensible au ransomware;
- être indépendant d’un seul utilisateur/facile à utiliser;
- être documenté.
J’aimerai rajouter la notion de “crypté” mais cela peut poser des soucis par rapport à la facilité d’utilisation.
Malgré une documentation même poussée, l’utilisation (et surtout la récupération) peut s’avérer difficile. En effet, si toute la documentation suppose l’utilisation d’une console/ligne de commande, il faut se souvenir que la plupart des personnes n’aiment pas cela. Même s’ils se lancent dans la ligne de commande, les documentations oublient très régulièrement que tout le monde est loin de maitriser les outils. Je suis moi-même confronté à cette problématique (je comprends et utilise la ligne de commande mais ne comprends pas les explications données dans un README car l’auteur suppose que je connaisse l’utilisation d’un outil (npm/uv/… pour en citer certains)).
Le backup peut se faire de manière incrémentale ou redondant. L’incrémentale ne regarde que les différences par rapport à la version précédente tandis que le redondant lui sauvegarde tout.
Il faut distinguer les données qui bougeront régulièrement de celles qui sont fixes. Dans un cadre familliale, vous sauvegarderez essentiellement vos photos et souvenirs de vacances qui ne bougeront pas.
Par contre, dans une entreprise, les budgets et les données clients seront régulièrement mis à jour.
Stratégie
La méthode 3-2-1, c’est bien sur papier. Mais comment la mettre en place ?
Les photos sont prises avec mon téléphone ou transmises sur mon téléphone. Cela pourrait faire une sauvegarde. En réalité, je ne compte pas cela comme une sauvegarde. Pourquoi ? Mon téléphone peut facile se perdre ou se casser. Et bam ! Plus de sauvegarde. Est-ce que, après changement, j’irai remettre mes photos sur mon téléphone ? Non.
-
J’ai fait le choix d’avoir un hébergement Cloud + Email. Mon hébergeur propose d’une application de sauvegarde sur smartphone. Cela permet d’envoyer automatiquement dans le cloud. La plupart des grands groupes (Microsoft, Apple et Google) propose un service similaire.
C’est automatique, vérifiable, facile à utiliser et bien documenté mais sensible au ransomware.
-
Je sauvegarde toutes ces données sur un serveur à la maison, un Raspberry Pi 4 RAM 4GO. Ce n’est pas une solution accessible à tout le monde. Une autre solution similaire est le NAS. Il existe des modèles et marques grand public qui font cela très bien. Idéalement, il faudra que ce NAS soit en RAID pour dupliquer les informations et éviter les pertes liées à une défaillance d’un seul disque dur. Le RAID devrait idéalement encore être mis en place chez moi.
C’est vérifiable. Cela peut être automatique, facile à utiliser et bien documenté en fonction de la technique employée (NAS ou serveur). Ce n’est pas insensible au ransomware.
-
Enfin, j’ai prévu un stockage dans le cloud [1]. C’est un service de stockage simple (pas de puissance de calcul, pas de RAM). Il existe plusieurs outils pour transférer les données.
C’est vérifiable. Cela peut être insensible au ransomware et vérifiable. Par contre, ce n’est pas facile à utiliser et la documentation n’est pas immédiate.
J’aurais pu mettre en place un stockage chez un tiers de confiance (ici, la famille) et se partager mutuellement du stockage. Je ne retrouve par contre pas l’application.
Critique
A mes yeux, la stratégie 3-2-1 est compliquée à mettre en place dans une famille car très dépendante d’une seule personne (le geek de service).
C’est également un budget (NAS/Rapsberry Pi/disque dur + stockage cloud)
Est-ce utile ? Regardez-vous vos photos ? En profitez-vous ? Quelle est la valeur de ces souvenirs ? Vos vidéos sont-elles utiles ? Je met en place une sauvegarde plus pour avoir l’assurance qu’autre chose. Intrinsèquement, ma famille n’en voit pas l’utilité car la sauvegarde via mon hébergeur suffit.
Programme
Pour faire les sauvegardes sur un stockage, il est préférable d’avoir recours à un programme permette l’automatisation.
Parce que le copier/coller, c’est gentil mais ce n’est pas tenable sur le long terme.
Dans les programmes libre et fonctionnant au minimum sous Debian, j’ai retenu :
- restic
- rsync
- borgbackup
- rclone
Ils ont tous connus et développés sur Internet.
Il en existe d’autres (non libre/pour Windows ou Mac/…).
Mon choix s’est principalement porté sur borgbackup car il existe un mode append-only.
Accès au stockage
L’accès se fait uniquement par clé SSH.
Il faut donc en générer une (ici, propre à cette applicatif). Il faut bien veiller à la garder quelque part sinon plus d’accès.
BorgBackup
- Initialisation :
borg init --encryption=repokey --append-only FOLDER_URL_CLOUD
Borg vous demande créer une clé pour l’encryption. ** Attention ** : Si vous perdez ou la clé SSH ou la clé d’encryption, c’est foutu !
Donc à garder au chaud sur différents formats (papier, numérique, …). Mais à ne pas perdre sous aucun prétexte.
FOLDER_URL_CLOUD est généralement donné comme ceci : user@server:/your/folder
S’il faut spécifier un port (par exemple le 2222), cela devient : user@server:2222/your/folder
-
Export de la clé d’encryption : borg key export FOLDER_URL_CLOUD encrypted-key-backup.txt
Il est possible d’en faire un QR code avec --qr-html ou une version papier avec --paper
-
Sauvegarde des fichiers : borg create FOLDER_URL_CLOUD::archive /data_to_archive
Si /data_to_archive ressemble plus à /data/to/archive/2025/9874z2s21d/, borg va respecter le chemin complet. Si vous souhaitez garder qu’une partie de la structure, il y a deux solutions : soit démarrer depuis le dossier de base soit rajouter un /./ pour signaler le départ de la structure. Autrement dit : /data/to/archive/./2025/9874z2s21d/
-
Lister les archives : borg list FOLDER_URL_CLOUD
-
Monter et démonter un folder : borg mount FOLDER_URL_CLOUD /where/to/mount et borg umount /where/to/mount
-
Récupérer une archive : borg extract FOLDER_URL_CLOUD::archive
Notez que borg extrait dans le répertoire courant.
[1] : cloud, c’est le PC d’un autre qui est globalement géré par cet autre. Il met à disposition de l’espace ou de la puissance de calcul et gère l’infrastructure derrière (moyennant paiement généralement).
Tout d’abord, les vidéos dans le cadre d’archive familliale, je n’y crois pas.
Nous sommes bombardés d’activités en tous genres que nous n’avons pas le temps de regarder des photos (déjà les sauvegarder et les trier sont parfois des missions impossibles).
Dans un soucis de garder quand même quelques archives familliales, je regarde pour faire un backup selon la règle 3-2-1. Cela risque de tourner à 3-3-1 mais c’est une autre discussion.
Pour minimiser l’espace de disque dur et suite à un shaarli, j’ai passé la collection de vidéos à la moulinette ffmpeg pour réduire les vidéos et avoir un seul codec (c’est un effet collatéral).
sebsauvage a proposé le code suivant :
ffmpeg -i entree.mkv -map 0:v -c:v libsvtav1 -preset 4 -crf 30 -tune 0 -pix_fmt yuv420p10le -g 120 -map 0:a? -c:a copy -map 0:s? -c:s copy sortie.mkv
-
i entree.mkv : Nom du fichier en entrée. Vous pouvez lui donner à manger n’importe quel format vidéo (mp4, avi…)
-
map 0:v -c:v libsvtav1 : Pour la vidéo, utiliser l’encodeur svt-av1. Il existe plusieurs encodeurs av1 (aom-av1, rav1e…). svt-av1 est rapide (ou plus précisément: on peut ajuster sa vitesse.)
-
crf 30 : Taux de compression. Le CRF est la qualité visuelle souhaitée (le débit de la vidéo sera donc variable de manière à conserver une qualité visuelle constante). Une valeur plus faible veut dire meilleure qualité, mais fichier résultant plus gros. 30 me convient. Au delà de 36 la qualité commence à chuter assez rapidement.
-
tune 0 : Pour avoir une qualité constante, il faut un algorithme qui va mesurer cette qualité. En ajoutant cette option, cela sélectionne un algorithme qui est plus proche de la manière dont se comporte la vision humaine.
-
preset 4 : Le codec svt-av1 possède des tonnes de paramètres, et ce réglage “preset” permet de prendre des “raccourcis de calcul” afin de compresser plus vite (au détriment de la taille du fichier final). Ce réglage n’influe pas beaucoup sur la qualité de l’image, mais surtout sur la taille finale du fichier et le temps d’encodage. Plus la valeur est basse, plus le fichier obtenu est petit mais plus le temps de compression est important. Prenez la valeur la plus basse tolérable pour vous (en fonction de la puissance de votre CPU et du temps que vous êtes prêt⋅e à accorder à l’encodage). Notez que:
- Les valeurs 4 à 6 donnent de bons résultats avec des temps d’encodage décents.
- Prendre des valeurs inférieures à 4 allonge énormément le temps de compression pour un gain négligeable. Déjà entre 4 et 6 la différence est faible. Pour plus d’informations, voir cette page.
- La chose qui peut être intéressante dans le preset 4 (si vous êtes prêt⋅e à le supporter) est qu’à partir de ce seuil, le Global motion compensation est activé, ce qui peut être un avantage dans les films où il y a beaucoup de mouvement.
- Au delà de 7, la qualité va tout de même commencer à souffrir. Les presets élevés sont plutôt conçus pour l’encodage en temps réel.
-
pix_fmt yuv420p10le : Par défaut les couleurs/luminosités sont encodées sur 8 bits. Cette option force l’encodage en 10 bits, ce qui aide à éliminer substantiellement les effets de “banding” dans les scènes sombres sans impacter notablement la taille du fichier.
-
g 120 : Ajoute une image de référence (I-Frame) toutes les 120 images. À 24 images par seconde, c’est toutes les 5 secondes. Les images de référence permettent aux lecteurs de faire plus facilement un “seek”, c’est à dire de raccrocher immédiatement au flux vidéo quand vous déplacez le curseur de lecture. (Par défaut, ffmpeg met 9999, ce qui rend les vidéos très difficiles à naviguer.)
-
map 0:a? -c:a copy : Pour l’audio, copier toutes les pistes audio tel quel (sans ré-encoder). Vous pouvez bien entendu changer cela par exemple en utilisant l’excellent codec Opus (qui est à l’audio ce que AV1 est la vidéo).
-
map 0:s? -c:s copy : Copie également toutes les pistes de sous-titres. Le ‘?’ sert à ne pas faire d’erreur s’il n’y aucune piste de sous-titres (idem pour l’audio).
-
sortie.mkv : Je vous conseille les conteneurs mkv car ils sont capables de stocker le flux vidéo, mais aussi plusieurs flux audio et les sous-titres.
A l’arrivé, les fichiers varient entre 27 et 80% de la taille d’origine.
Chez moi, c’est assez variable car les vidéos familliales sont parfois petites (quelques secondes). Ils arrivent donc qu’à l’arrivée, le mkv soit plus lourd que l’original. Je fais le choix de quand même garder car cela uniformise l’ensemble.
Même s’il y a donc des ratés, dans l’ensemble, les mkv font entre 25 et 50% de la taille d’origine.
via sebsauvage
Pour aller plus loin
C’est bien d’avoir une ligne de commande qui permette de réduire la taille des vidéos.
Toutefois, comme je suis sur une bibliothèque de plusieurs années, il est important de faire cela sur l’ensemble.
Combien de vidéos ai-je chez moi ?
Bonne question ! Je ne sais pas.
J’en ai profité pour savoir ce que j’avais comme type de fichier. Après quelques prompts avec l’IA, j’ai une liste des extensions existants dans mon dossier de photos/vidéos familliales. J’ai quelques trucs exotiques. L’IA me confirme, a priori, l’utilisation de certaines extensions.
Je conçois un programme bash pour convertir tous les fichiers dont l’extension s’apparente à une vidéo vers un conteneur mkv. Il m’a fallu plusieurs itérations pour trouver la bonne méthodologie (sur un dossier, sur une extension, vérifier les tailles). J’y suis arrivé. petit script
J’ai essayé avec le Raspberry Pi. En un mot : OUBLIEZ !
Puis avec le famille, en sachant que ce dernier est une récupération de PC de bureau (donc pas de carte graphique digne de ce nom et RAM limité), cela avance. C’est consommateur de puissance. Donc le PC a parfois du mal à tout gérer. Madame s’est plainte (en même temps, c’est le pc qu’elle utilise hors boulot).
Finalement, je me suis résolu à lancer cela sur ma machine du boulot, qui, sans être une bête de course, est plus rapide et me permet de gérer l’activité du processus (je dors, tu peux y aller; je travaille, tu t’arrêtes). ffmpeg est installable en version portable. La version full possède le codec en question.
J’ai du réconcevoir mon programme bash pour qu’il fonctionne sous/avec PowerShell.
J’ai également fait le choix de transférer toutes les vidéos sur un disque dur qui n’est pas celui du serveur de backup avant de compresser les vidéos. Quand le processus est fait, je transfère les nouveaux fichiers et je vérifie qu’il y ait bien des doublons (en ne regardant pas les extensions) puis je supprime le fichier original. petit script
Quand le démarrage sera fini, l’idée est de mettre cela au propre et automatiser la compression/sauvegarde/…