Aller au contenu
Les 31 fichesFREN中文
Fiches
Partie 2 · fiche 5 sur 6 Niveau : Intermédiaire Durée de lecture : 16 min Plateformes : Linux

Git, GitHub & sauvegardes

Votre code mérite un filet. Git pour tout versionner, GitHub pour le mettre à l'abri et le partager, et une vraie stratégie de sauvegarde pour ne jamais rien perdre, même si la machine grille.

Sur cette fiche
  1. 01Pourquoi c’est non négociable (surtout avec un agent)
  2. 02Configurer Git sur la machine
  3. 03Donner à la machine l’accès à GitHub
  4. 04Votre premier dépôt, et l’agent qui s’en sert
  5. 05Les sauvegardes : la règle 3-2-1
  6. 06Trois pièges qu’on ne découvre qu’au moment de restaurer
  7. 07Questions fréquentes

En bref

Avant de laisser un agent écrire du code, versionnez tout avec Git et poussez une copie sur GitHub : chaque commit devient un point de restauration, et le code survit à la perte de la machine. Le plus simple pour relier le mini-PC à GitHub est la GitHub CLI (gh auth login, protocole SSH), avec un .gitignore écrit avant le premier commit pour ne jamais pousser de secret. Pour tout ce qui n'est pas dans Git (fichiers .env, bases, configs), appliquez la règle 3-2-1 avec restic, automatisez la sauvegarde et testez la restauration au moins une fois.

À faire avant : C'est quoi un agent IA ?

Vous venez de poser un agent qui va écrire du code à toute vitesse. Avant qu’il ne touche quoi que ce soit d’important, on installe le filet : Git, pour que chaque changement soit réversible, et GitHub, pour que votre travail vive ailleurs que sur ce seul petit boîtier. Parce qu’un mini-PC, ça peut griller, se faire voler, ou se prendre un rm de trop. Votre code, lui, ne doit jamais disparaître avec.

Pourquoi c’est non négociable (surtout avec un agent)

Un agent de code va vite, et il a confiance en lui. La plupart du temps c’est génial ; parfois il casse quelque chose. Git transforme ça en non-événement :

  • Chaque commit est un point de restauration. L’agent a tout cassé ? git restore ou git reset, et vous revenez à l’état d’avant en une seconde. C’est le « annuler » ultime.
  • Vous voyez exactement ce qui a changé. git diff vous montre, ligne par ligne, ce que l’agent a touché. Vous relisez avant de valider, c’est le cœur du métier (voir Sécuriser les accès).
  • GitHub met votre code hors de portée des catastrophes. Disque mort, vol, fausse manip : votre code est sur GitHub, intact. Vous le récupérez sur n’importe quelle machine en une commande.
  • Et vous pouvez partager. Donner accès à un collègue, bosser à plusieurs, ouvrir en open source : tout passe par GitHub.

Configurer Git sur la machine

Trois lignes, une fois pour toutes. Git a besoin de savoir qui vous êtes (ça signe vos commits) :

git config --global user.name "Ton Prénom Nom"
git config --global user.email "[email protected]"
# Quelques défauts sains
git config --global init.defaultBranch main   # la branche par défaut s'appelle "main"
git config --global pull.rebase false          # comportement de pull prévisible

Donner à la machine l’accès à GitHub

Votre machine doit prouver à GitHub qu’elle a le droit de pousser. Deux chemins ; prenez celui qui vous parle.

0 étape sur 2 faite Vos cases cochées restent dans ce navigateur.

  1. Le plus simple : la GitHub CLI (gh)

    L’outil officiel gh gère l’authentification pour vous, jetons compris.

    # Installe gh depuis les dépôts d'Ubuntu
    sudo apt install -y gh
    # Connecte la machine à ton compte, réponds aux questions, ça ouvre un navigateur
    gh auth login
    

    Choisissez « GitHub.com », puis « SSH » comme protocole : gh génère et installe la clé tout seul. À la fin, votre machine peut cloner, pousser, créer des dépôts. C’est l’option que je recommande pour démarrer.

    Le paquet d’Ubuntu a souvent plusieurs versions de retard (2.46 dans Ubuntu 26.04, quand GitHub publie la 2.102 au 1er octobre 2026). Ça suffit pour s’authentifier et pousser ; si une commande récente vous manque, installez gh depuis le dépôt officiel de GitHub.

  2. L'option manuelle : une clé SSH dédiée à la machine

    Si vous préférez tout maîtriser, créez une clé SSH propre à ce mini-PC (une clé par machine, c’est plus sain) :

    ssh-keygen -t ed25519 -C "mini-pc-github"
    cat ~/.ssh/id_ed25519.pub   # copie ce qui s'affiche
    

    Collez la clé publique dans GitHub → Settings → SSH and GPG keys → New SSH key. Puis vérifiez :

    ssh -T [email protected]   # doit te saluer par ton pseudo GitHub
    

Votre premier dépôt, et l’agent qui s’en sert

cd ~/mon-projet
git init
# Le fichier qui dit à git quoi IGNORER, crucial
cat > .gitignore <<'EOF'
node_modules/
.env
*.log
dist/
EOF
git add -A
git commit -m "Premier jet"
# Crée le dépôt distant et pousse (avec gh, c'est une ligne)
gh repo create mon-projet --private --source=. --push

Une fois en place, demandez à votre agent de gérer git pour vous : « commits réguliers avec des messages clairs », « crée une branche pour cette fonctionnalité », « ouvre une pull request ». Vous pouvez même l’inscrire dans votre fichier mémoire : « commit après chaque étape validée, messages conventionnels, ne pousse sur main qu’avec mon accord. »

Les sauvegardes : la règle 3-2-1

GitHub sauve votre code. Mais votre mini-PC contient bien d’autres choses qui ne sont pas dans git : vos fichiers .env, vos bases de données, des données générées, des configs système. Pour celles-là, on applique la règle d’or de la sauvegarde :

0 étape sur 4 faite Vos cases cochées restent dans ce navigateur.

  1. Décidez quoi sauvegarder

    • Le code → déjà sur GitHub, rien à faire de plus.
    • Les secrets (.env, clés) → sauvegardez-les chiffrés, jamais en clair.
    • Les données qui comptent (bases, fichiers générés, configs maison).
    • Pas les modèles Ollama ni node_modules : ils se re-téléchargent, inutile de les sauvegarder.
  2. Choisissez un outil et une destination

    restic est l’outil idéal : sauvegardes chiffrées, dédupliquées, incrémentales. Vous l’envoyez vers un NAS, un autre disque, ou un stockage cloud.

    sudo apt install -y restic
    # Initialise un dépôt de sauvegarde (ex: vers un NAS monté)
    restic -r /mnt/nas/backups init
    # Première sauvegarde
    restic -r /mnt/nas/backups backup ~/projets ~/configs
    

    rclone est une excellente alternative pour viser un stockage cloud (chiffré côté client).

  3. Automatise, une sauvegarde manuelle finit toujours par s'oublier

    Programmez un timer systemd ou une tâche cron quotidienne. Votre agent sait écrire ça en deux minutes : demandez-lui « crée un service systemd qui lance ma sauvegarde restic chaque nuit à 3h ».

  4. TESTEZ votre restauration

    Tant que vous ne l’avez jamais restaurée, votre sauvegarde reste un espoir. Faites l’exercice au moins une fois : restic -r /mnt/nas/backups restore latest --target /tmp/test-restore, et vérifiez que vos fichiers sont bien là.

Trois pièges qu’on ne découvre qu’au moment de restaurer

Visez le disque par son étiquette, jamais par son chemin

Un disque externe ne se monte pas toujours au même endroit. Si le dossier existe déjà, votre bureau ajoute un chiffre et monte sur /media/vous/1TB1, en laissant /media/vous/1TB derrière lui sous forme de dossier vide sur le disque système.

Le test naïf [ -d "$DEST" ] passe très bien. Et votre sauvegarde part tranquillement sur le disque système en croyant écrire sur l’externe.

# on résout par l'étiquette, et on exige un vrai point de montage
DEST="$(findmnt -rn -S LABEL=1TB -o TARGET 2>/dev/null | head -1)"
[ -n "$DEST" ] && mountpoint -q "$DEST" \
  || { echo "SSD externe non monté, sauvegarde annulée"; exit 1; }

Une liste écrite en dur oublie les nouveaux venus

Un script qui énumère vos bases à la main ne sauvegarde jamais le projet que vous avez créé le mois dernier. Et il ne le dit pas. Balayez ce qui tourne réellement :

for c in $(docker ps --format '{{.Names}}'); do
  # on sonde la présence de l'outil plutôt que le nom de l'image :
  # ça attrape aussi pgvector, timescaledb et les autres dérivés
  docker exec "$c" sh -c 'command -v pg_dumpall' >/dev/null 2>&1 || continue
  docker exec "$c" pg_dumpall -U postgres | gzip > "$DEST/$c.sql.gz"
done

Une reconstruction destructive doit être atomique

Un script qui supprime la base puis la reconstruit vous laisse sans rien s’il meurt au milieu. Construisez à côté, puis renommez : sur un même système de fichiers, le renommage est atomique.

sqlite3 base.sqlite.tmp < schema.sql
# … remplissage …
mv base.sqlite.tmp base.sqlite      # bascule instantanée, ou rien

Et avant la bascule, vérifiez : intégrité, nombre d’index, plancher de lignes. Une reconstruction qui aboutit à moitié passe sinon pour un succès.

Questions fréquentes

Quelle est la différence entre Git et GitHub ?

Git est l'outil de versionnage qui tourne sur votre machine et enregistre l'historique de vos fichiers en local. GitHub est un service en ligne où vous poussez une copie de cet historique. Git sert de carnet de bord, GitHub de coffre-fort distant, et on a besoin des deux.

Comment revenir en arrière quand un agent de code a tout cassé ?

Si le travail est versionné avec Git, chaque commit est un point de restauration : git restore ou git reset ramène les fichiers à l'état d'avant en une seconde. Et avant de valider, git diff montre ligne par ligne ce que l'agent a touché.

Que faire si une clé API a été poussée sur GitHub ?

La considérer comme fuitée, même dans un dépôt privé : on la révoque et on en génère une nouvelle. Pour l'éviter, écrivez le fichier .gitignore, avec au moins .env et node_modules, avant le tout premier git add.

Faut-il sauvegarder les modèles Ollama et le dossier node_modules ?

Non, ils se re-téléchargent. Sauvegardez plutôt ce qui n'existe nulle part ailleurs : les fichiers .env et les clés, toujours chiffrés, les bases de données, les fichiers générés et les configurations maison. Le code, lui, est déjà sur GitHub.

Pourquoi une sauvegarde peut-elle échouer sans qu'on s'en aperçoive ?

Parce que certains pièges échouent sans bruit : un disque externe monté sous un autre nom laisse la sauvegarde partir sur le disque système, une liste de bases écrite en dur oublie les nouveaux projets, une reconstruction interrompue au milieu passe pour un succès. Visez le disque par son étiquette, balayez ce qui tourne réellement et construisez à côté avant de renommer.

Les termes de cette fiche : AgentGitCommitOpen source (vs open-weight)

Une erreur ?

Une commande ne marche plus, un prix a changé ?

Les outils bougent tous les mois. Dites-moi ce qui cloche dans cette fiche, je corrige et je redate.

Seuls la page, votre message et le contact éventuel sont gardés. Rien d’autre.

Fiche 13 sur 31 · partie 2 aucune fiche lue pour l’instant Ouvrir le sommaire des fiches