Docs · Référence
Référence des commandes
Toutes les commandes et options de l’agent `neverwiped` (version 0.3.0, restic 0.18.1). Cette page est générée à partir du code source de l’agent : elle ne peut pas s’écarter de ce que la commande accepte.
Fonctionnement
L’agent est installé dans /usr/local/bin/neverwiped. Toutes les commandes se lancent en root (sinon : neverwiped doit être lancé en root). Les options s’écrivent avant ou après les arguments, --option valeur ou --option=valeur. -y équivaut à --yes.
La page des messages d’erreur donne chaque message avec sa cause et sa solution.
Le script d’installation
curl -fsSL https://neverwiped.com/install.sh | sh
curl -fsSL https://neverwiped.com/install.sh | sh -s -- --api-key "$NEVERWIPED_API_KEY" --yes
curl -fsSL https://neverwiped.com/install.sh | NEVERWIPED_NO_SETUP=1 sh
Le script détecte l’architecture (amd64 ou arm64), télécharge l’agent, vérifie son empreinte SHA-256 (inscrite dans le script lui-même), l’installe dans /usr/local/bin/neverwiped, puis lance neverwiped install avec tout ce qui suit sh -s --. Avec NEVERWIPED_NO_SETUP=1, il installe seulement le binaire.
Commandes
neverwiped install
Enregistre ce serveur, détecte quoi sauvegarder, montre le plan, planifie les sauvegardes et lance la première. Relancée sur un serveur installé, elle recalcule le plan, sans jamais créer un second serveur.
neverwiped install [--api-key CLÉ] [--yes] [--no-backup] [--include CHEMIN]... [--exclude MOTIF]... [--preset NAME]... [--no-databases] [--no-docker] [--no-estimate] [--limit-upload DÉBIT] [--limit-cpus N] [--priority low|normal] [--same-server] [--api-url URL]
| Option | Effet |
|---|---|
--api-key CLÉ | Clé d’API de compte (nw_acc_…) créée dans l’espace client, Clés d’API. Sinon NEVERWIPED_API_KEY, sinon une question sur le terminal. Ignorée une fois le serveur enregistré. |
--api-url URL | Adresse de la plateforme ; install.sh la passe déjà. Sinon NEVERWIPED_API_URL. |
--include CHEMIN | Ajoute un dossier au plan. Répétable : --include /data --include /opt/app. |
--exclude MOTIF | Exclut des fichiers (motif restic, par exemple "*.log" ou /var/www/site/tmp). Répétable. |
--preset | Ajoute un jeu d’exclusions : logs, build, trash, disk-images, archives, ou all. Répétable, ou séparé par des virgules. Aucun n’est actif par défaut ; l’estimation de taille indique ce que chacun ferait gagner. Les motifs sont dans le guide de démarrage. |
--pause-volume | Sauvegarde ce volume Docker avec ses conteneurs en pause le temps d’une copie locale (de quelques secondes à quelques minutes), au lieu de le lire à chaud. Répétable. |
--live-volume | Lit ce volume Docker à chaud, sans mettre ses conteneurs en pause (le choix par défaut pour les volumes qui ne sont pas une base). Répétable. |
--limit-upload DÉBIT | Plafonne l’envoi vers le stockage, par exemple 20mbit (ou 20Mbps), 800kbit, 2MB, 500KiB ; off retire la limite. L’unité est obligatoire : Mbit/s et Mo/s diffèrent d’un facteur 8. La restauration n’est jamais limitée. Conservé quand install est relancée sans l’option. |
--limit-cpus N | Laisse restic utiliser au plus N cœurs (GOMAXPROCS) pour lire, compresser et chiffrer ; off utilise tous les cœurs. C’est un plafond de travail en parallèle, pas un quota exact. Conservé quand install est relancée sans l’option. |
--priority | low (par défaut) : restic et les outils d’export des bases locales tournent en nice 10 et en classe disque idle, le site passe d’abord. normal : comme tout autre processus, pour une sauvegarde plus rapide. Conservé quand install est relancée sans l’option. |
--yes, -y | Répond oui à toutes les questions : valide le plan et lance la première sauvegarde. Obligatoire sans terminal (scripts, agents IA). -y aussi. |
--no-backup | Ne lance pas la première sauvegarde ; elle aura lieu à l’heure prévue ou avec neverwiped backup now. |
--no-databases | Ne sauvegarde aucune base, ni locale ni dans Docker. |
--no-docker | Ignore Docker : ni volumes, ni bases dans des conteneurs. |
--no-estimate | Saute l’estimation de taille affichée avec le plan (et la vérification du quota avant la première sauvegarde). Utile sur les serveurs à plusieurs millions de fichiers. |
--same-server | Seulement quand l’agent s’est arrêté avec « cette configuration appartient au serveur … et a été copiée sur une autre machine » sur le serveur lui-même, parce que son identifiant de machine a changé (système réinstallé avec /etc/neverwiped remis en place, /etc/machine-id régénéré). Enregistre le nouvel identifiant et garde le même serveur et les mêmes clés. Jamais sur une copie : là, lancez neverwiped uninstall --yes, puis réinstallez, pour que la copie ait ses propres clés. |
neverwiped estimate
Montre le plan que proposerait install et le mesure : taille et nombre de fichiers de chaque dossier et volume Docker après exclusions, les plus gros dossiers, la taille des fichiers des bases locales et ce que retirerait chaque préréglage. Lit seulement les tailles, n’enregistre rien, ne fait aucun appel réseau. À lancer avant de souscrire pour choisir une formule.
neverwiped estimate [--include CHEMIN]... [--exclude MOTIF]... [--preset NAME]... [--no-databases] [--no-docker] [--json] [--max-seconds N]
| Option | Effet |
|---|---|
--include CHEMIN | Ajoute un dossier, comme avec install. |
--exclude MOTIF | Exclut des fichiers (motif restic), comme avec install. |
--preset | Applique un préréglage d’exclusions, comme avec install. |
--pause-volume | Marque un volume Docker comme copié en pause, comme avec install (la taille de la copie est affichée). |
--live-volume | Marque un volume Docker comme lu à chaud, comme avec install. |
--max-seconds | Arrête la mesure après N secondes et affiche le résultat en « au moins ». Pas de limite par défaut (install s’arrête à 90 s). |
--json | Sortie JSON (plan, puis estimate avec files.bytes, files.files, files.partial, files.sources, files.largest, files.savings, databases_on_disk_bytes, databases_not_measured, pause_copy_bytes), pour les scripts et agents IA. |
--no-databases | Laisse les bases de côté, comme avec install. |
--no-docker | Ignore Docker, comme avec install. |
neverwiped status
Affiche le serveur, le plan de sauvegarde, l’abonnement, l’état des sauvegardes, l’espace utilisé, la dernière sauvegarde réussie, la planification trouvée et les dernières lignes du journal.
neverwiped status [--json]
| Option | Effet |
|---|---|
--json | Sortie JSON (hostname, server_id, agent_version, plan, platform avec l’abonnement, l’espace utilisé et la dernière sauvegarde, schedule, limits, log_file ; platform_error si la plateforme est injoignable), pour les scripts et les agents IA. Les noms de champs ne changent pas avec la langue. |
neverwiped limits
Affiche ou change ce que les sauvegardes peuvent prendre au serveur : le débit d’envoi, les cœurs CPU que restic peut utiliser, et la priorité (basse par défaut : nice 10 et classe disque idle). Sans option, affiche les limites en place. Elles s’appliquent à chaque sauvegarde, planifiée ou manuelle, et au nettoyage des anciennes sauvegardes ; les restaurations ne sont jamais limitées. Fonctionne hors ligne : les limites sont dans /etc/neverwiped/config.json.
neverwiped limits [--limit-upload DÉBIT|off] [--limit-cpus N|off] [--priority low|normal] [--json]
| Option | Effet |
|---|---|
--limit-upload DÉBIT | Plafonne l’envoi vers le stockage, par exemple 20mbit (ou 20Mbps), 800kbit, 2MB, 500KiB ; off retire la limite. L’unité est obligatoire : Mbit/s et Mo/s diffèrent d’un facteur 8. La restauration n’est jamais limitée. |
--limit-cpus N | Laisse restic utiliser au plus N cœurs (GOMAXPROCS) pour lire, compresser et chiffrer ; off utilise tous les cœurs. C’est un plafond de travail en parallèle, pas un quota exact. |
--priority | low (par défaut) : restic et les outils d’export des bases locales tournent en nice 10 et en classe disque idle, le site passe d’abord. normal : comme tout autre processus, pour une sauvegarde plus rapide. |
--json | Sortie JSON (upload_kib_s, 0 = sans limite ; cpus, 0 = tous les cœurs ; cpus_total ; priority : low ou normal), pour les scripts et les agents IA. Aussi dans status --json, champ limits. |
neverwiped backup now
Lance une sauvegarde tout de suite, avec le plan enregistré. Seuls les changements depuis la précédente sont envoyés.
neverwiped backup now
| Option | Effet |
|---|---|
--scheduled | La forme utilisée par la planification (minuteur systemd ou cron). Inutile de la lancer à la main. |
neverwiped check
Vérifie que les sauvegardes stockées sont lisibles et complètes, avec restic check et votre clé (la plateforme et le stockage ne peuvent pas le faire à votre place : ils n’ont pas la clé). Rien n’est modifié. Sans option, seule la structure est relue ; --read relit et déchiffre aussi une part du contenu, --full tout le contenu. Environ une fois par semaine, après une sauvegarde réussie, l’agent la lance seul, sur une part différente à chaque fois. Code de sortie 0 si aucune erreur n’est trouvée, 1 sinon.
neverwiped check [--read 5%|1/26|2G] [--full]
| Option | Effet |
|---|---|
--read | Relit et déchiffre aussi une part du contenu : un pourcentage (5%), une part sur N (1/26) ou une quantité (2G), tirée au hasard. |
--full | Relit tout le contenu : long, et autant de téléchargement que la taille du dépôt. |
neverwiped list
Liste les sauvegardes restaurables, avec la date (heure du serveur), l’identifiant, le volume ajouté et le contenu.
neverwiped list [--json]
| Option | Effet |
|---|---|
--json | Sortie JSON (instantanés restic : id, short_id, time, hostname, paths, tags, summary), pour les scripts et les agents IA. |
neverwiped restore
Restaure une sauvegarde : latest, un jour 2026-11-03 (la dernière de ce jour), une minute "2026-11-03 22:59" ou un identifiant d’au moins 4 caractères. Avec --target, dans un dossier à part ; sans, en place, après avoir tapé RESTAURER (ou passé --yes). Avec un agent IA : d’abord --plan, puis la commande affichée avec --approve après votre accord.
neverwiped restore <date|id|latest> [--target DOSSIER] [--include CHEMIN]... [--yes] [--plan | --approve CODE]
| Option | Effet |
|---|---|
--target DOSSIER | Restaure dans ce dossier, sans toucher aux fichiers en place. Les chemins d’origine sont recréés dessous : /var/www devient DOSSIER/var/www. Demande confirmation si le dossier n’est pas vide. |
--include CHEMIN | Ne restaure que ce chemin, tel qu’il était sur le serveur (par exemple /var/www/site). Répétable. |
--approve CODE | Ne lance la restauration que si le code est celui que --plan a affiché pour cette sauvegarde, ce dossier et ces chemins ; sinon refuse avant d’écrire quoi que ce soit. Vaut les confirmations que le plan a montrées. Le code n’est pas un mot de passe : il lie un accord à un plan. Incompatible avec --plan. |
--yes, -y | Confirme sans question. Pour une restauration en place, c’est un accord explicite d’écrasement. |
--plan | N’écrit rien : montre quelle sauvegarde, quels chemins et où la restauration écrirait (en place ou dans un dossier à part, vide ou non), un code d’accord et la commande exacte pour la lancer. Ne prend pas le verrou et ne contacte pas la plateforme. Pour les agents IA : montrer ce plan, attendre l’accord. |
neverwiped recover
Sur un nouveau serveur, après la perte de l’ancien : donne à ce serveur l’accès aux sauvegardes de l’ancien, avec une clé d’API de compte et la clé de récupération affichée à l’installation. L’accès au stockage et la clé d’agent du serveur perdu sont révoqués ; rien n’est restauré avant neverwiped restore.
neverwiped recover [--api-key CLÉ] [--server ID|NOM] [--recovery-key-file FICHIER] [--repo-key] [--yes] [--api-url URL]
| Option | Effet |
|---|---|
--api-key CLÉ | Clé d’API de compte (nw_acc_…). Sinon NEVERWIPED_API_KEY, sinon une question sur le terminal. |
--server ID|NOM | Le serveur perdu, par son identifiant ou son nom (voir l’espace client). Obligatoire avec --yes si le compte a plusieurs serveurs ; sinon vous choisissez dans une liste. |
--recovery-key-file FICHIER | Fichier contenant la clé de récupération (affichée une fois à l’installation). Sinon NEVERWIPED_RECOVERY_KEY, sinon une question masquée sur le terminal. La clé n’est jamais envoyée à NeverWiped. |
--api-url URL | Adresse de la plateforme. Sinon NEVERWIPED_API_URL. |
--yes, -y | Confirme sans question (les accès du serveur perdu sont révoqués). Obligatoire sans terminal. |
--repo-key | Le fichier de clé contient une copie du /etc/neverwiped/repo.key du serveur perdu (copie de ce dossier ou instantané disque), pas une clé de récupération. Le code de contrôle n’est pas comparé ; restic vérifie la clé une fois l’identifiant de stockage ré-émis : une clé erronée révoque donc quand même l’identifiant du serveur perdu. |
neverwiped recovery-key
Pour une clé de récupération perdue ou douteuse, sur le serveur lui-même tant qu’il tourne. check teste une clé sur les sauvegardes de ce serveur et dit si c’est l’actuelle ; la clé n’est envoyée nulle part. new ajoute une nouvelle clé de récupération grâce au repo.key de ce serveur, vérifie qu’elle ouvre les sauvegardes, l’affiche une fois avec son code de contrôle et n’envoie que le code à NeverWiped (le titulaire du compte reçoit un e-mail). L’ancienne clé n’est pas supprimée et ouvre toujours les sauvegardes. Une fois le serveur perdu, aucune des deux commandes ne peut aider. Voir Chiffrement.
neverwiped recovery-key check [--recovery-key-file FICHIER] | recovery-key new [--yes]
| Option | Effet |
|---|---|
--recovery-key-file FICHIER | check seulement : fichier contenant la clé à tester. Sinon NEVERWIPED_RECOVERY_KEY, sinon une question masquée sur le terminal. |
--yes, -y | new seulement : crée la clé sans question. La clé est quand même affichée une fois : ne mettez pas cette sortie dans un journal partagé. |
neverwiped feedback
Envoie un message à l’équipe NeverWiped : le message, son type et la version de l’agent, rien d’autre (ni nom de machine, ni journal). Montre ce qui sera envoyé et demande avant. Sans message sur la ligne de commande, le lit sur l’entrée standard.
neverwiped feedback [MESSAGE...] [--kind bug|idea|help|other] [--yes] [--api-key CLÉ]
| Option | Effet |
|---|---|
--kind TYPE | bug, idea, help ou other (par défaut). |
--api-key CLÉ | Clé d’API de compte, pour un serveur où l’agent n’est pas installé. Sinon la clé d’agent de ce serveur, sinon NEVERWIPED_API_KEY. |
--api-url URL | Adresse de la plateforme. Sinon celle enregistrée à l’installation, sinon NEVERWIPED_API_URL. |
--yes, -y | Envoie sans question. |
neverwiped update
Met à jour l’agent avec une version signée. La liste des versions doit être signée par une clé de publication intégrée à l’agent (la plateforme ne la détient pas), non expirée et pas plus ancienne que la dernière acceptée par ce serveur ; le binaire doit correspondre à son empreinte SHA-256 et à sa taille signées et réussir un essai avant de remplacer l’actuel, qui est gardé pour --rollback. Si une étape échoue, rien ne change. Configuration, clés, dépôt et plan ne sont pas touchés. La mise à jour automatique après la sauvegarde de nuit est coupée par défaut.
neverwiped update [--check] [--to VERSION] [--yes] | update --rollback | update --pin VERSION|X.Y|none | update --auto on|off
| Option | Effet |
|---|---|
--to | Installe cette version précise, même plus ancienne (la confirmation est alors « non » par défaut). |
--pin | 0.3.1 reste sur cette version, 0.3 sur cette branche (corrections seulement), none suit la dernière version. Réglage seulement : n’installe rien. |
--auto | on : après la sauvegarde planifiée, au plus une fois par jour, installe ce que l’épinglage permet ; ne change jamais le résultat de la sauvegarde. Coupée par défaut. |
--check | Affiche la version installée, l’épinglage, la mise à jour automatique et la version disponible. N’installe rien. |
--rollback | Remet le binaire remplacé par la dernière mise à jour, sans réseau, et épingle cette version. Relancé, annule le retour arrière. |
--yes, -y | Confirme sans question. |
neverwiped uninstall
Retire l’agent du serveur : planification, binaire, restic, état, cache, configuration (sauf --keep-config). Refuse tant qu’une sauvegarde, une restauration ou une vérification tourne, et relance tout conteneur qu’une exécution interrompue a laissé en pause. La plateforme est prévenue et la clé du serveur révoquée. Vos sauvegardes restent sur le stockage, ou avec --delete-backups leur suppression est demandée : le titulaire du compte la confirme dans l’espace client. Le journal est conservé sauf --remove-log.
neverwiped uninstall [--yes] [--keep-config] [--keep-backups | --delete-backups] [--remove-log]
| Option | Effet |
|---|---|
--yes, -y | Confirme sans question. |
--keep-config | Garde /etc/neverwiped (configuration et clé de chiffrement locale). |
--keep-backups | Garde les sauvegardes sur le stockage sans poser la question (le choix par défaut avec --yes). |
--delete-backups | Demande à la plateforme de supprimer les sauvegardes de ce serveur. Rien n’est supprimé depuis le serveur : le titulaire du compte reçoit un e-mail avec un lien et confirme dans l’espace client (les clés du serveur ne peuvent pas supprimer de sauvegarde à la demande). |
--remove-log | Retire aussi le journal /var/log/neverwiped.log (conservé par défaut). |
neverwiped mcp
Lance un serveur Model Context Protocol sur l’entrée et la sortie standard, pour un agent IA qui travaille sur ce serveur (Claude Code, Codex, Cursor). Outils fixes : l’état de ce serveur, les serveurs du compte et l’historique des opérations (avec un jeton d’API), et le lancement d’une sauvegarde. Il ne donne jamais de clé ; la restauration, recover, la désinstallation et les autres commandes à confirmation restent des commandes que vous tapez vous-même.
neverwiped mcp [--read-only] [--token-file FICHIER]
| Option | Effet |
|---|---|
--token-file | Fichier contenant un jeton d’API en lecture seule (nw_tok_…, espace client > Clés d’API > Jetons d’API) pour les outils du compte ; sinon NEVERWIPED_API_TOKEN. Une clé d’API de compte est refusée. |
--read-only | Retire le seul outil d’écriture (le lancement d’une sauvegarde) : l’agent ne peut que lire. |
neverwiped version
Affiche les versions de l’agent et de restic.
neverwiped version
Aussi : neverwiped --version, neverwiped -v
neverwiped help
Affiche l’aide intégrée, dans la langue du CLI.
neverwiped help
Aussi : neverwiped --help, neverwiped -h
Réimporter des bases dans Docker
docker exec -i CONTENEUR sh -c 'exec psql -U "${POSTGRES_USER:-postgres}" -d postgres' < /root/restore/var/lib/neverwiped/dumps/postgresql-docker-CONTENEUR.sql
docker exec -i CONTENEUR sh -c 'M=$(command -v mariadb || command -v mysql); MYSQL_PWD="${MARIADB_ROOT_PASSWORD:-${MYSQL_ROOT_PASSWORD:-}}" exec "$M" -uroot' < /root/restore/var/lib/neverwiped/dumps/mysql-docker-CONTENEUR.sql
Si le conteneur lit son mot de passe root dans un fichier (MARIADB_ROOT_PASSWORD_FILE ou MYSQL_ROOT_PASSWORD_FILE), comme le fait la sauvegarde, commencez le script de la ligne MySQL par MYSQL_PWD=$(cat "$MARIADB_ROOT_PASSWORD_FILE"); export MYSQL_PWD; (ou le nom en MYSQL_). Pour ramener une seule base, préparez d’abord son fichier comme dans Une base de données.
Variables d’environnement
| Variable | Effet |
|---|---|
NEVERWIPED_API_KEY | Clé d’API de compte pour install, à la place de --api-key. |
NEVERWIPED_API_TOKEN | Jeton d’API en lecture seule (nw_tok_…) pour mcp, à la place de --token-file : permet à l’agent IA de lister les serveurs du compte et l’historique des opérations. Une clé d’API de compte est refusée. |
NEVERWIPED_API_URL | Adresse de la plateforme pour install, à la place de --api-url. |
NEVERWIPED_LANG | Langue du CLI : en, fr ou es. Prioritaire sur la langue du système (LC_ALL, LC_MESSAGES, LANG) ; --lang est prioritaire sur elle. Anglais par défaut. |
NEVERWIPED_RECOVERY_KEY | Clé de récupération pour recover et recovery-key check, à la place de --recovery-key-file. À éviter dans un historique de shell partagé. |
NEVERWIPED_RELEASES_URL | Pour update : autre adresse des versions signées (miroir ; par défaut <plateforme>/downloads/releases). La signature reste vérifiée avec les clés intégrées. |
NEVERWIPED_RESTIC_BASE_URL | Miroir de téléchargement de restic (mêmes noms de fichiers que les versions GitHub). L’empreinte SHA-256 reste vérifiée. |
NEVERWIPED_ROOT | Préfixe de tous les chemins de l’agent (tests, conteneurs). Pas en production. |
NEVERWIPED_NO_SETUP | install.sh seulement : installe le binaire sans lancer neverwiped install. |
Codes de sortie
| Code | Signification |
|---|---|
0 | Succès |
1 | Échec : le message suit Erreur : sur la sortie d’erreur |
2 | Mauvaise utilisation : option inconnue, argument manquant, clé d’API absente avec --yes, aucune commande |
Vérifier la planification
systemctl list-timers neverwiped-backup.timer
cat /etc/cron.d/neverwiped
crontab -l | grep neverwiped
L’une des trois montre la planification (systemd, cron, ou la crontab de root sur Alpine et BusyBox). Si aucune ne le fait, relancez neverwiped install --yes.