Aller au contenu
NeverWipedEssai gratuit14 jours · sans carte

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.

Version Markdown

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]
OptionEffet
--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 URLAdresse de la plateforme ; install.sh la passe déjà. Sinon NEVERWIPED_API_URL.
--include CHEMINAjoute un dossier au plan. Répétable : --include /data --include /opt/app.
--exclude MOTIFExclut des fichiers (motif restic, par exemple "*.log" ou /var/www/site/tmp). Répétable.
--presetAjoute 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-volumeSauvegarde 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-volumeLit 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ÉBITPlafonne 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 NLaisse 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.
--prioritylow (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, -yRépond oui à toutes les questions : valide le plan et lance la première sauvegarde. Obligatoire sans terminal (scripts, agents IA). -y aussi.
--no-backupNe lance pas la première sauvegarde ; elle aura lieu à l’heure prévue ou avec neverwiped backup now.
--no-databasesNe sauvegarde aucune base, ni locale ni dans Docker.
--no-dockerIgnore Docker : ni volumes, ni bases dans des conteneurs.
--no-estimateSaute 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-serverSeulement 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]
OptionEffet
--include CHEMINAjoute un dossier, comme avec install.
--exclude MOTIFExclut des fichiers (motif restic), comme avec install.
--presetApplique un préréglage d’exclusions, comme avec install.
--pause-volumeMarque un volume Docker comme copié en pause, comme avec install (la taille de la copie est affichée).
--live-volumeMarque un volume Docker comme lu à chaud, comme avec install.
--max-secondsArrê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).
--jsonSortie 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-databasesLaisse les bases de côté, comme avec install.
--no-dockerIgnore 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]
OptionEffet
--jsonSortie 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]
OptionEffet
--limit-upload DÉBITPlafonne 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 NLaisse 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.
--prioritylow (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.
--jsonSortie 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
OptionEffet
--scheduledLa 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]
OptionEffet
--readRelit 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.
--fullRelit 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]
OptionEffet
--jsonSortie 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]
OptionEffet
--target DOSSIERRestaure 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 CHEMINNe restaure que ce chemin, tel qu’il était sur le serveur (par exemple /var/www/site). Répétable.
--approve CODENe 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, -yConfirme sans question. Pour une restauration en place, c’est un accord explicite d’écrasement.
--planN’é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]
OptionEffet
--api-key CLÉClé d’API de compte (nw_acc_…). Sinon NEVERWIPED_API_KEY, sinon une question sur le terminal.
--server ID|NOMLe 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 FICHIERFichier 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 URLAdresse de la plateforme. Sinon NEVERWIPED_API_URL.
--yes, -yConfirme sans question (les accès du serveur perdu sont révoqués). Obligatoire sans terminal.
--repo-keyLe 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]
OptionEffet
--recovery-key-file FICHIERcheck seulement : fichier contenant la clé à tester. Sinon NEVERWIPED_RECOVERY_KEY, sinon une question masquée sur le terminal.
--yes, -ynew 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É]
OptionEffet
--kind TYPEbug, 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 URLAdresse de la plateforme. Sinon celle enregistrée à l’installation, sinon NEVERWIPED_API_URL.
--yes, -yEnvoie 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
OptionEffet
--toInstalle cette version précise, même plus ancienne (la confirmation est alors « non » par défaut).
--pin0.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.
--autoon : 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.
--checkAffiche la version installée, l’épinglage, la mise à jour automatique et la version disponible. N’installe rien.
--rollbackRemet le binaire remplacé par la dernière mise à jour, sans réseau, et épingle cette version. Relancé, annule le retour arrière.
--yes, -yConfirme 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]
OptionEffet
--yes, -yConfirme sans question.
--keep-configGarde /etc/neverwiped (configuration et clé de chiffrement locale).
--keep-backupsGarde les sauvegardes sur le stockage sans poser la question (le choix par défaut avec --yes).
--delete-backupsDemande à 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-logRetire 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]
OptionEffet
--token-fileFichier 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-onlyRetire 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

VariableEffet
NEVERWIPED_API_KEYClé d’API de compte pour install, à la place de --api-key.
NEVERWIPED_API_TOKENJeton 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_URLAdresse de la plateforme pour install, à la place de --api-url.
NEVERWIPED_LANGLangue 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_KEYClé 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_URLPour 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_URLMiroir de téléchargement de restic (mêmes noms de fichiers que les versions GitHub). L’empreinte SHA-256 reste vérifiée.
NEVERWIPED_ROOTPréfixe de tous les chemins de l’agent (tests, conteneurs). Pas en production.
NEVERWIPED_NO_SETUPinstall.sh seulement : installe le binaire sans lancer neverwiped install.

Codes de sortie

CodeSignification
0Succès
1Échec : le message suit Erreur : sur la sortie d’erreur
2Mauvaise 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.