#+title:      Sauvegarde
#+date:       [2024-08-03 Sat 15:49]
#+filetags:   :pc:
#+identifier: 20240803T154933


* Stratégie: tout est géré avec git-annex.
Dans un dossier local "annex", il y a 2 dépôts
- data: contient les données sensibles, non sauvegardées en dehors du PC portable
- documents : tout le reste (photos, cours...)
La sauvegarde est faite sur Google Drive et Mega (avec rclone)

** Justification
git-annex est très lent pour un nombre important de fichiers car il gère chaque fichier individuellement. Mais il permet de gérer plusieurs destination d'archivage (dossier local, ssh...).
Google Drive et Mega ne sont pas très adaptées car le protocole git n'est pas supporté.

Restic est une bonne alternative pour de la sauvegarde seule (voir )
* Configuration
** Dépendances
- git-annex
- rclone
- installer [[https://github.com/git-annex-remote-rclone/git-annex-remote-rclone]]
(copier exécutable dans $PATH)
- ajouter un symlink ([[https://rclone.org/commands/rclone_gitannex/][source]]  )
   #+begin_src sh
   ln -s /usr/bin/rclone ~/.local/bin/git-annex-remote-rclone-builtin
   #+end_src

** Google Drive et Mega avec rclone
#+begin_src sh
rclone config
#+end_src
Suivre les indications pour ajouter un remote nommé mega de type Mega (29)
Idem pour google drive (nommé gdrive)

** Git-annex
#+begin_src sh
cd documents
git init
git annex init
git annex add
#+end_src

Créer un remote megaremote qui pointe vers le remote mega dans rclone. Pas d'encryption:
#+begin_src sh
git annex initremote mega type=external externaltype=rclone-builtin rcloneremotename=mega encryption=none
#+end_src
Idem pour Google Drive
#+begin_src sh
git annex initremote gdrive type=external externaltype=rclone-builtin rcloneremotename=gdrive encryption=none
#+end_src
* Maintenance
Dans chaque dossier

#+begin_src nu
rsync -avz raspberry:Downloads/torrents private/

cd documents; git annex sync --content ; cd ..
cd data ; git annex sync --content ; cd ..

#+end_src

* Old
** Papers avec Github LFS
:PROPERTIES:
:CUSTOM_ID: papers
:END:
#+begin_src sh
cd papers
git init
git annex init
git annex add
git annex initremote github-lfs type=git-lfs url=git@github.com:apraga/papers.git encryption=none
git lfs track "*.pdf"
git annex sync --content
#+end_src

Note: les articles sont sur sourcehut aussi mais sans lfs.

** Sauvegarde restic sur google drive et mega
:PROPERTIES:
:CUSTOM_ID: sauvegarde-restic-sur-google-drive-et-mega
:END:
Cf configuration rclone puis

#+begin_src nu
cd ~/annex
$env.RESTIC_PASSWORD = (pass show Backup/restic-private)
restic -r rclone:gdrive:restic-private init
restic -r rclone:mega:restic-private init
restic -r rclone:gdrive:restic-private backup private
restic -r rclone:mega:restic-private backup private

$env.RESTIC_PASSWORD = (pass show Backup/restic-public)
restic -r rclone:gdrive:restic-public init
restic -r rclone:mega:restic-public init
restic -r rclone:gdrive:restic-public backup public
restic -r rclone:mega:restic-public backup public

$env.RESTIC_PASSWORD = (pass show Backup/restic-public)
restic -r rclone:gdrive:restic-public backup public
restic -r rclone:mega:restic-public backup public
#+end_src

** Google Drive avec encryption
Pour googledrive, il faut un client id et un client secret selon les
consignes ici : [[https://rclone.org/drive/#making-your-own-client-id]].
On encrypte mais avec la clé dans le dépôt git donc ne pas mettre les
dépôts n'importe où !

#+begin_src sh
git annex initremote gdriveremote type=external externaltype=rclone target=gdrive prefix=annex-private chunk=50MiB encryption=shared rclone_layout=lower
#+end_src

* Gentoo
:PROPERTIES:
:CUSTOM_ID: gentoo
:END:
Un dépôt git pour /etc/portage