Docs · Referencia
Referencia de comandos
Todos los comandos y opciones del agente `neverwiped` (versión 0.3.0, restic 0.18.1). Esta página se genera a partir del código fuente del agente, así que no puede desviarse de lo que acepta el CLI.
Versión MarkdownEl CLI habla inglés por defecto (`--lang es` para español). Algunos bloques de salida vienen de una sesión en francés: están señalados y traducidos en el texto.
Cómo funcionan
El agente está en /usr/local/bin/neverwiped. Todos los comandos se ejecutan como root (si no: neverwiped doit être lancé en root, «debe ejecutarse como root»). Las opciones van antes o después de los argumentos, como --opción valor o --opción=valor. -y equivale a --yes.
El CLI muestra sus mensajes en inglés por defecto, o en español o francés con --lang es|fr o NEVERWIPED_LANG; la página de mensajes de error explica cada uno. Los ejemplos de salida de estas páginas vienen de una sesión en francés y están señalados.
El script de instalación
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
El script detecta la arquitectura (amd64 o arm64), descarga el agente, comprueba su huella SHA-256 (escrita en el propio script), lo instala en /usr/local/bin/neverwiped y después ejecuta neverwiped install con todo lo que pongas tras sh -s --. Con NEVERWIPED_NO_SETUP=1 solo instala el binario.
Comandos
neverwiped install
Registra este servidor, detecta qué copiar, muestra el plan, programa las copias y lanza la primera. Si la vuelves a lanzar en un servidor instalado, recalcula el plan; nunca crea un segundo servidor.
neverwiped install [--api-key CLAVE] [--yes] [--no-backup] [--include RUTA]... [--exclude PATRÓN]... [--preset NAME]... [--no-databases] [--no-docker] [--no-estimate] [--limit-upload VELOCIDAD] [--limit-cpus N] [--priority low|normal] [--same-server] [--api-url URL]
| Opción | Qué hace |
|---|---|
--api-key CLAVE | Clave de API de cuenta (nw_acc_…) de tu panel, Claves de API. Si no, NEVERWIPED_API_KEY; si no, una pregunta en la terminal. Se ignora una vez registrado el servidor. |
--api-url URL | Dirección de la plataforma; install.sh ya la pasa. Si no, NEVERWIPED_API_URL. |
--include RUTA | Añade una carpeta al plan. Repetible: --include /data --include /opt/app. |
--exclude PATRÓN | Excluye archivos (patrón de restic, como "*.log" o /var/www/site/tmp). Repetible. |
--preset | Añade un conjunto de exclusiones: logs, build, trash, disk-images, archives o all. Repetible, o separado por comas. Ninguno está activo por defecto; la estimación de tamaño indica cuánto ahorraría cada uno. Los patrones están en la guía de inicio. |
--pause-volume | Respalda este volumen Docker con sus contenedores en pausa durante una copia local (de segundos a minutos), en lugar de leerlo en caliente. Repetible. |
--live-volume | Lee este volumen Docker en caliente, sin pausar sus contenedores (lo predeterminado para los volúmenes que no son una base). Repetible. |
--limit-upload VELOCIDAD | Limita el envío al almacenamiento, por ejemplo 20mbit (o 20Mbps), 800kbit, 2MB, 500KiB; off quita el límite. La unidad es obligatoria: Mbit/s y MB/s difieren en un factor 8. La restauración nunca se limita. Se conserva si install se vuelve a lanzar sin la opción. |
--limit-cpus N | Deja que restic use como máximo N núcleos (GOMAXPROCS) para leer, comprimir y cifrar; off usa todos los núcleos. Es un tope de trabajo en paralelo, no una cuota exacta. Se conserva si install se vuelve a lanzar sin la opción. |
--priority | low (por defecto): restic y las herramientas de exportación de las bases locales se ejecutan con nice 10 y la clase de disco idle, el sitio va primero. normal: como cualquier otro proceso, para una copia más rápida. Se conserva si install se vuelve a lanzar sin la opción. |
--yes, -y | Responde sí a todas las preguntas: acepta el plan y lanza la primera copia. Obligatorio sin terminal (scripts, agentes de IA). También -y. |
--no-backup | No lanza la primera copia; se hará a la hora programada o con neverwiped backup now. |
--no-databases | No copia ninguna base de datos, ni local ni en Docker. |
--no-docker | Ignora Docker: ni volúmenes ni bases de datos en contenedores. |
--no-estimate | Omite la estimación de tamaño mostrada con el plan (y la comprobación de cuota antes de la primera copia). Útil en servidores con millones de archivos. |
--same-server | Solo cuando el agente se detuvo con «esta configuración pertenece al servidor … y se copió en otra máquina» en el propio servidor, porque cambió su identificador de máquina (sistema reinstalado con /etc/neverwiped repuesto, /etc/machine-id regenerado). Registra el nuevo identificador y conserva el mismo servidor y las mismas claves. Nunca en una copia: ahí, ejecuta neverwiped uninstall --yes y vuelve a instalar, para que la copia tenga sus propias claves. |
neverwiped estimate
Muestra el plan que propondría install y lo mide: tamaño y archivos de cada carpeta y volumen Docker tras las exclusiones, las carpetas más grandes, el tamaño de los archivos de las bases locales y lo que quitaría cada preajuste. Solo lee tamaños, no registra nada y no hace ninguna llamada de red. Lánzalo antes de suscribirte para elegir un plan.
neverwiped estimate [--include RUTA]... [--exclude PATRÓN]... [--preset NAME]... [--no-databases] [--no-docker] [--json] [--max-seconds N]
| Opción | Qué hace |
|---|---|
--include RUTA | Añade una carpeta, como con install. |
--exclude PATRÓN | Excluye archivos (patrón de restic), como con install. |
--preset | Aplica un preajuste de exclusiones, como con install. |
--pause-volume | Marca un volumen Docker como copiado en pausa, como con install (se muestra el tamaño de la copia). |
--live-volume | Marca un volumen Docker como leído en caliente, como con install. |
--max-seconds | Detiene la medida tras N segundos y muestra el resultado como «al menos». Sin límite por defecto (install se detiene a los 90 s). |
--json | Salida JSON (plan, luego estimate con files.bytes, files.files, files.partial, files.sources, files.largest, files.savings, databases_on_disk_bytes, databases_not_measured, pause_copy_bytes), para scripts y agentes de IA. |
--no-databases | Deja fuera las bases de datos, como con install. |
--no-docker | Ignora Docker, como con install. |
neverwiped status
Muestra el servidor, el plan de lo que se copia, tu suscripción, si las copias están activas, el espacio usado, la última copia correcta, la programación encontrada y las últimas líneas del registro.
neverwiped status [--json]
| Opción | Qué hace |
|---|---|
--json | Salida JSON (hostname, server_id, agent_version, plan, platform con la suscripción, el espacio usado y la última copia, schedule, limits, log_file; platform_error si no se llega a la plataforma), para scripts y agentes de IA. Los nombres de campo no cambian con el idioma. |
neverwiped limits
Muestra o cambia lo que las copias pueden tomar de este servidor: la velocidad de envío, los núcleos de CPU que puede usar restic y la prioridad (baja por defecto: nice 10 y clase de disco idle). Sin opciones, muestra los límites actuales. Se aplican a cada copia, programada o manual, y a la purga de las copias antiguas; las restauraciones nunca se limitan. Funciona sin conexión: los límites se guardan en /etc/neverwiped/config.json.
neverwiped limits [--limit-upload VELOCIDAD|off] [--limit-cpus N|off] [--priority low|normal] [--json]
| Opción | Qué hace |
|---|---|
--limit-upload VELOCIDAD | Limita el envío al almacenamiento, por ejemplo 20mbit (o 20Mbps), 800kbit, 2MB, 500KiB; off quita el límite. La unidad es obligatoria: Mbit/s y MB/s difieren en un factor 8. La restauración nunca se limita. |
--limit-cpus N | Deja que restic use como máximo N núcleos (GOMAXPROCS) para leer, comprimir y cifrar; off usa todos los núcleos. Es un tope de trabajo en paralelo, no una cuota exacta. |
--priority | low (por defecto): restic y las herramientas de exportación de las bases locales se ejecutan con nice 10 y la clase de disco idle, el sitio va primero. normal: como cualquier otro proceso, para una copia más rápida. |
--json | Salida JSON (upload_kib_s, 0 = sin límite; cpus, 0 = todos los núcleos; cpus_total; priority: low o normal), para scripts y agentes de IA. También en status --json, campo limits. |
neverwiped backup now
Lanza una copia ahora, con el plan guardado. Solo se envían los cambios desde la anterior.
neverwiped backup now
| Opción | Qué hace |
|---|---|
--scheduled | La forma que usa la programación (temporizador systemd o cron). No hace falta lanzarla a mano. |
neverwiped check
Comprueba que las copias guardadas se pueden leer y están completas, con restic check y tu clave (la plataforma y el almacenamiento no pueden hacerlo por ti: no tienen la clave). No cambia nada. Sin opciones solo se relee la estructura; --read relee y descifra también una parte del contenido, --full todo el contenido. Más o menos una vez por semana, tras una copia correcta, el agente la lanza solo, con una parte distinta cada vez. Código de salida 0 si no encuentra errores, 1 si los encuentra.
neverwiped check [--read 5%|1/26|2G] [--full]
| Opción | Qué hace |
|---|---|
--read | Relee y descifra también una parte del contenido: un porcentaje (5%), una parte de N (1/26) o una cantidad (2G), elegida al azar. |
--full | Relee todo el contenido: tarda, y descarga tanto como el tamaño del repositorio. |
neverwiped list
Lista las copias que puedes restaurar, con fecha (hora del servidor), identificador, tamaño añadido y contenido.
neverwiped list [--json]
| Opción | Qué hace |
|---|---|
--json | Salida JSON (instantáneas de restic: id, short_id, time, hostname, paths, tags, summary), para scripts y agentes de IA. |
neverwiped restore
Restaura una copia: latest, un día 2026-11-03 (la última de ese día), un minuto "2026-11-03 22:59" o un identificador de al menos 4 caracteres. Con --target, en una carpeta aparte; sin él, en su sitio, después de escribir RESTAURAR (o pasar --yes). Con un agente de IA: primero --plan y, tras tu permiso, el comando mostrado con --approve.
neverwiped restore <date|id|latest> [--target CARPETA] [--include RUTA]... [--yes] [--plan | --approve CÓDIGO]
| Opción | Qué hace |
|---|---|
--target CARPETA | Restaura en esta carpeta, sin tocar los archivos en uso. Las rutas originales se recrean debajo: /var/www pasa a CARPETA/var/www. Pide confirmación si la carpeta no está vacía. |
--include RUTA | Solo restaura esta ruta, tal como estaba en el servidor (por ejemplo /var/www/site). Repetible. |
--approve CÓDIGO | Solo lanza la restauración si el código es el que --plan mostró para esta copia, esta carpeta y estas rutas; si no, la rechaza antes de escribir nada. Equivale a las confirmaciones que mostró el plan. El código no es una contraseña: vincula un permiso a un plan. No se combina con --plan. |
--yes, -y | Confirma sin preguntar. En una restauración en su sitio es un permiso explícito para sobrescribir. |
--plan | No escribe nada: muestra qué copia, qué rutas y dónde escribiría la restauración (en su sitio o en una carpeta aparte, vacía o no), un código de aprobación y el comando exacto para lanzarla. No toma el bloqueo ni contacta con la plataforma. Para agentes de IA: enseñar este plan y esperar el permiso. |
neverwiped recover
En un servidor nuevo, tras perder el anterior: da a este servidor acceso a las copias del anterior, con una clave de API de cuenta y la clave de recuperación mostrada en la instalación. Se revocan el acceso al almacenamiento y la clave de agente del servidor perdido; no se restaura nada hasta neverwiped restore.
neverwiped recover [--api-key CLAVE] [--server ID|NOMBRE] [--recovery-key-file ARCHIVO] [--repo-key] [--yes] [--api-url URL]
| Opción | Qué hace |
|---|---|
--api-key CLAVE | Clave de API de cuenta (nw_acc_…). Si no, NEVERWIPED_API_KEY; si no, una pregunta en la terminal. |
--server ID|NOMBRE | El servidor perdido, por su identificador o su nombre (mira el panel). Obligatorio con --yes si la cuenta tiene varios servidores; si no, eliges de una lista. |
--recovery-key-file ARCHIVO | Archivo con la clave de recuperación (mostrada una vez en la instalación). Si no, NEVERWIPED_RECOVERY_KEY; si no, una pregunta oculta en la terminal. La clave nunca se envía a NeverWiped. |
--api-url URL | Dirección de la plataforma. Si no, NEVERWIPED_API_URL. |
--yes, -y | Confirma sin preguntar (se revocan los accesos del servidor perdido). Obligatorio sin terminal. |
--repo-key | El archivo de clave contiene una copia del /etc/neverwiped/repo.key del servidor perdido (copia de esa carpeta o instantánea de disco), no una clave de recuperación. No se compara el código de control; restic comprueba la clave una vez reemitida la credencial de almacenamiento, así que una clave errónea revoca igualmente la credencial del servidor perdido. |
neverwiped recovery-key
Para una clave de recuperación perdida o dudosa, en el propio servidor mientras siga funcionando. check prueba una clave con las copias de este servidor y dice si es la actual; la clave no se envía a ningún sitio. new añade una nueva clave de recuperación con el repo.key de este servidor, comprueba que abre las copias, la muestra una vez con su código de control y solo envía el código a NeverWiped (el titular de la cuenta recibe un correo). La clave anterior no se elimina y sigue abriendo las copias. Una vez perdido el servidor, ninguna de las dos puede ayudar. Ver Cifrado.
neverwiped recovery-key check [--recovery-key-file ARCHIVO] | recovery-key new [--yes]
| Opción | Qué hace |
|---|---|
--recovery-key-file ARCHIVO | Solo check: archivo con la clave que se prueba. Si no, NEVERWIPED_RECOVERY_KEY; si no, una pregunta oculta en la terminal. |
--yes, -y | Solo new: crea la clave sin preguntar. La clave se muestra igualmente una vez: no pongas esa salida en un registro compartido. |
neverwiped feedback
Envía un mensaje al equipo de NeverWiped: el mensaje, su tipo y la versión del agente, nada más (ni nombre de máquina ni registros). Muestra lo que se enviará y pregunta antes. Sin mensaje en la línea de comandos, lo lee de la entrada estándar.
neverwiped feedback [MENSAJE...] [--kind bug|idea|help|other] [--yes] [--api-key CLAVE]
| Opción | Qué hace |
|---|---|
--kind TIPO | bug, idea, help u other (por defecto). |
--api-key CLAVE | Clave de API de cuenta, para un servidor sin el agente instalado. Si no, la clave de agente de este servidor; si no, NEVERWIPED_API_KEY. |
--api-url URL | Dirección de la plataforma. Si no, la guardada en la instalación; si no, NEVERWIPED_API_URL. |
--yes, -y | Envía sin preguntar. |
neverwiped update
Actualiza el agente a una versión firmada. La lista de versiones debe estar firmada por una clave de publicación integrada en el agente (la plataforma no la tiene), no caducada y no más antigua que la última aceptada por este servidor; el binario debe coincidir con su huella SHA-256 y su tamaño firmados y superar una prueba antes de reemplazar el actual, que se conserva para --rollback. Si falla un paso, no cambia nada. Configuración, claves, repositorio y plan no se tocan. La actualización automática tras la copia nocturna está desactivada por defecto.
neverwiped update [--check] [--to VERSION] [--yes] | update --rollback | update --pin VERSION|X.Y|none | update --auto on|off
| Opción | Qué hace |
|---|---|
--to | Instala esa versión exacta, también una más antigua (la confirmación es entonces «no» por defecto). |
--pin | 0.3.1 se queda en esa versión, 0.3 en esa rama (solo correcciones), none sigue la última versión. Solo ajuste: no instala nada. |
--auto | on: tras la copia programada, como mucho una vez al día, instala lo que permite la fijación; nunca cambia el resultado de la copia. Desactivada por defecto. |
--check | Muestra la versión instalada, la fijación, la actualización automática y la versión disponible. No instala nada. |
--rollback | Vuelve a poner el binario reemplazado por la última actualización, sin red, y fija esa versión. Repetido, lo deshace. |
--yes, -y | Confirma sin preguntar. |
neverwiped uninstall
Quita el agente de este servidor: programación, binario, restic, estado, caché, configuración (salvo --keep-config). Se niega mientras haya una copia, restauración o verificación en curso, y reanuda cualquier contenedor que una ejecución interrumpida dejó en pausa. Se avisa a la plataforma y se revoca la clave del servidor. Tus copias se quedan en el almacenamiento, o con --delete-backups se pide borrarlas: el titular de la cuenta lo confirma en el panel. El registro se conserva salvo --remove-log.
neverwiped uninstall [--yes] [--keep-config] [--keep-backups | --delete-backups] [--remove-log]
| Opción | Qué hace |
|---|---|
--yes, -y | Confirma sin preguntar. |
--keep-config | Conserva /etc/neverwiped (configuración y clave de cifrado local). |
--keep-backups | Conserva las copias en el almacenamiento sin preguntar (lo predeterminado con --yes). |
--delete-backups | Pide a la plataforma que borre las copias de este servidor. Nada se borra desde el servidor: el titular de la cuenta recibe un correo con un enlace y lo confirma en el panel (las claves del servidor no pueden borrar copias a petición). |
--remove-log | Quita también el registro /var/log/neverwiped.log (se conserva por defecto). |
neverwiped mcp
Lanza un servidor Model Context Protocol en la entrada y la salida estándar, para un agente de IA que trabaja en este servidor (Claude Code, Codex, Cursor). Herramientas fijas: el estado de este servidor, los servidores de la cuenta y el historial de operaciones (con un token de API), y lanzar una copia. Nunca entrega una clave; restaurar, recover, desinstalar y los demás comandos con confirmación siguen siendo comandos que escribes tú.
neverwiped mcp [--read-only] [--token-file ARCHIVO]
| Opción | Qué hace |
|---|---|
--token-file | Archivo con un token de API de solo lectura (nw_tok_…, área de cliente > Claves de API > Tokens de API) para las herramientas de la cuenta; si no, NEVERWIPED_API_TOKEN. Una clave de API de cuenta se rechaza. |
--read-only | Quita la única herramienta de escritura (lanzar una copia): el agente solo puede leer. |
neverwiped version
Muestra las versiones del agente y de restic.
neverwiped version
También: neverwiped --version, neverwiped -v
neverwiped help
Muestra la ayuda integrada, en el idioma del CLI.
neverwiped help
También: neverwiped --help, neverwiped -h
Reimportar bases de datos en Docker
docker exec -i CONTENEDOR sh -c 'exec psql -U "${POSTGRES_USER:-postgres}" -d postgres' < /root/restore/var/lib/neverwiped/dumps/postgresql-docker-CONTENEDOR.sql
docker exec -i CONTENEDOR 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-CONTENEDOR.sql
Si el contenedor lee su contraseña de root de un archivo (MARIADB_ROOT_PASSWORD_FILE o MYSQL_ROOT_PASSWORD_FILE), como hace la copia, empieza el script de la línea MySQL con MYSQL_PWD=$(cat "$MARIADB_ROOT_PASSWORD_FILE"); export MYSQL_PWD; (o el nombre con MYSQL_). Para recuperar una sola base, prepara antes su archivo como en Una base de datos.
Variables de entorno
| Variable | Qué hace |
|---|---|
NEVERWIPED_API_KEY | Clave de API de cuenta para install, en lugar de --api-key. |
NEVERWIPED_API_TOKEN | Token de API de solo lectura (nw_tok_…) para mcp, en lugar de --token-file: permite al agente de IA listar los servidores de la cuenta y el historial de operaciones. Una clave de API de cuenta se rechaza. |
NEVERWIPED_API_URL | Dirección de la plataforma para install, en lugar de --api-url. |
NEVERWIPED_LANG | Idioma del CLI: en, fr o es. Tiene prioridad sobre la configuración regional del sistema (LC_ALL, LC_MESSAGES, LANG); --lang tiene prioridad sobre ella. Inglés por defecto. |
NEVERWIPED_RECOVERY_KEY | Clave de recuperación para recover y recovery-key check, en lugar de --recovery-key-file. Evítala en un historial de shell compartido. |
NEVERWIPED_RELEASES_URL | Para update: otra dirección de las versiones firmadas (un espejo; por defecto <plataforma>/downloads/releases). La firma se sigue comprobando con las claves integradas. |
NEVERWIPED_RESTIC_BASE_URL | Réplica de descarga de restic (mismos nombres de archivo que en GitHub). La huella SHA-256 se sigue comprobando. |
NEVERWIPED_ROOT | Prefijo de todas las rutas del agente (pruebas, contenedores). No en producción. |
NEVERWIPED_NO_SETUP | Solo install.sh: instala el binario sin lanzar neverwiped install. |
Códigos de salida
| Código | Significado |
|---|---|
0 | Correcto |
1 | Fallo: el mensaje sigue a Erreur : en la salida de error |
2 | Uso incorrecto: opción desconocida, falta un argumento, falta la clave de API con --yes, ningún comando |
Comprobar la programación
systemctl list-timers neverwiped-backup.timer
cat /etc/cron.d/neverwiped
crontab -l | grep neverwiped
Uno de los tres muestra la programación (systemd, cron o la crontab de root en Alpine y BusyBox). Si ninguno lo hace, vuelve a lanzar neverwiped install --yes.