Docs · Conceptos
Lo que llega a tu servidor
Cada ruta que escribe la instalación, qué es, quién puede leerla y qué le hace la desinstalación. No se toca nada más en el servidor.
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.
El árbol de archivos
/
├── usr/local/bin/
│ └── neverwiped el agente (un solo binario estático)
├── etc/
│ ├── neverwiped/
│ │ ├── config.json configuración, clave del servidor, credencial de almacenamiento (0600, root)
│ │ └── repo.key clave de cifrado del repositorio, nunca se envía (0600, root)
│ └── systemd/system/
│ └── neverwiped-backup.{service,timer} programación (o /etc/cron.d/neverwiped, o la crontab de root)
└── var/
├── lib/neverwiped/
│ ├── bin/restic-0.18.1 restic, huella comprobada
│ ├── dumps/ volcados de bases durante una copia, se vacía después
│ ├── volumes/ copias en pausa de los volúmenes Docker durante una copia, se vacía después
│ └── paused contenedores pausados para esa copia, hasta reanudarse
├── cache/neverwiped/ caché de restic
└── log/neverwiped.log registro local, una línea con fecha por evento
| Ruta | Qué es | ¿Sale del servidor? |
|---|---|---|
/usr/local/bin/neverwiped | El agente: install, status, backup now, list, restore, uninstall | No |
/etc/neverwiped/config.json | Identificador del servidor, clave del servidor, credencial de almacenamiento, plan de copia, límites | No |
/etc/neverwiped/repo.key | La clave que cifra tus copias | Nunca |
/etc/systemd/system/neverwiped-backup.timer | La programación (systemd); si no, /etc/cron.d/neverwiped; si no, la crontab de root (BusyBox) | No |
/var/lib/neverwiped/bin/ | restic 0.18.1, y neverwiped.previous tras una actualización | No |
/var/lib/neverwiped/dumps/ | Volcados de bases, solo durante una copia | Sí, cifrados, dentro de la copia |
/var/lib/neverwiped/volumes/ | Copias de los volúmenes Docker tomadas con sus contenedores en pausa, solo durante una copia | Sí, cifradas, dentro de la copia |
/var/lib/neverwiped/paused | Identificadores de los contenedores pausados para esa copia, solo durante ella (la siguiente copia reanuda los que hayan quedado en pausa) | No |
/var/cache/neverwiped/ | Caché de restic | No |
/var/log/neverwiped.log | Registro local | No (la plataforma recibe un resumen de cada ejecución: fechas, tamaños, estado, texto del error) |
Lo que se copia por defecto: /etc, /var/spool/cron, /root y /home si no están vacíos, archivos web (/var/www, /srv, raíces declaradas en nginx, Apache o Caddy), aplicaciones de /opt, PostgreSQL y MySQL/MariaDB (locales o en Docker, como volcados coherentes), volúmenes Docker (en caliente, o copiados con sus contenedores en pausa unos segundos: Un volumen Docker). Excluido por defecto: **/node_modules, **/.cache, /var/cache, /var/lib/docker/overlay2, /root/.npm, /root/go/pkg y el propio restic. Unos preajustes opcionales (logs, build, trash, disk-images, archives) excluyen más: ver Tamaño y exclusiones.
Velocidad, CPU y prioridad
Una copia lee tus archivos, los comprime y los cifra, y envía al almacenamiento lo que ha cambiado. Por defecto se ejecuta con prioridad baja (nice 10 y clase de disco idle), para que tu sitio vaya primero, sin límite de velocidad de envío ni de núcleos. Para dejar más a tu sitio:
neverwiped limits
neverwiped limits --limit-upload 20mbit
neverwiped limits --limit-cpus 1
neverwiped limits --priority normal
neverwiped limits --limit-upload off --limit-cpus off --priority low
| Límite | Qué hace | Valores |
|---|---|---|
--limit-upload | Limita lo que restic envía al almacenamiento (--limit-upload de restic) | 20mbit (o 20Mbps), 800kbit, 2MB, 500KiB, off. La unidad es obligatoria: Mbit/s y MB/s difieren en un factor 8 |
--limit-cpus | restic usa como máximo N núcleos para leer, comprimir y cifrar (GOMAXPROCS). Un tope de trabajo en paralelo, no una cuota exacta | de 1 al número de núcleos (nproc), off |
--priority | low: restic y las herramientas de exportación de las bases locales se ejecutan con nice 10 e ionice -c 3. normal: como cualquier otro proceso | low (por defecto), normal |
Las mismas opciones sirven con neverwiped install, para que la primera copia ya vaya limitada. Se guardan en /etc/neverwiped/config.json, se conservan al volver a lanzar install y las muestra neverwiped status. Se aplican a cada copia, programada o manual, y a la purga de las copias antiguas. **Las restauraciones y neverwiped list nunca se limitan.**
Conviene saber:
- La primera copia lo envía todo. Con un límite de envío, la instalación muestra cuánto tarda como máximo en enviar el plan (menos tras la compresión y la deduplicación). Una copia lanzada por el temporizador de systemd se detiene a las 12 horas: si la primera necesita más, ejecuta
neverwiped limits --limit-upload off, luegoneverwiped backup now, y vuelve a poner el límite cuando termine. Las siguientes solo envían los cambios. - Exportaciones de bases de datos: la prioridad baja se aplica a la herramienta de exportación (
pg_dumpall,mysqldump), no al trabajo del propio servidor de base de datos. Para una base en Docker, la exportación se ejecuta dentro del contenedor, con la prioridad del contenedor. - Los volúmenes Docker copiados en pausa se copian siempre con prioridad normal, para que sus contenedores se reanuden cuanto antes.
- La clase de disco (
ionice -c 3) solo tiene efecto con un planificador de disco que la use (BFQ, y mq-deadline en núcleos recientes); en muchos discos virtuales (none) no cambia nada, y lo que cuenta es el nivel nice y los límites de arriba. - Los agentes antiguos tenían
Nice=10eIOSchedulingClass=idleenneverwiped-backup.service. Ahora el agente fija la prioridad él mismo; la unidad se reescribe en la siguiente copia o al cambiarneverwiped limits.
Actualizar el agente
neverwiped update --check # versión instalada, fijación, lo disponible
neverwiped update # la instala, tras una confirmación
neverwiped update --rollback # vuelve a la versión anterior (sin red)
Una actualización solo instala una versión firmada. NeverWiped firma la lista de versiones con una clave guardada fuera de línea, y el agente lleva la clave pública correspondiente: la plataforma que sirve los archivos no puede firmar, así que una lista o un binario modificado se rechaza. El agente también rechaza una lista caducada o más antigua que una ya aceptada, comprueba la huella SHA-256 y el tamaño del binario, y lo ejecuta una vez antes de que reemplace al actual, que se guarda en /var/lib/neverwiped/bin/neverwiped.previous. Si falla un paso, no cambia nada. La configuración, las claves, el repositorio y el plan no se tocan.
- Fija una versión (
--pin 0.3.1), una rama que solo recibe correcciones (--pin 0.3), o sigue la última (--pin none).--rollbackfija la versión que vuelve a poner. - La actualización automática está desactivada por defecto.
neverwiped update --auto ondeja que la copia nocturna instale lo que permite la fijación, como mucho una vez al día, después de la copia; una actualización fallida nunca hace fallar la copia. - Una versión retirada nunca se instala, y un servidor que la ejecute vuelve a la última versión buena de su rama.
- Comprueba un binario tú mismo:
https://neverwiped.com/downloads/releases/releases.jsonda el tamaño y la huella SHA-256 de cada versión, ysha256sum /usr/local/bin/neverwipeddebe mostrar una de ellas.
Todas las opciones: referencia de comandos.
Desinstalar
neverwiped uninstall --yes
Por orden, el comando:
- se niega mientras haya una copia, restauración o verificación en curso (espera y vuelve a lanzarlo), y reanuda cualquier contenedor Docker que una ejecución interrumpida dejó en pausa. Si alguno no puede reanudarse, se detiene sin quitar nada;
- quita la programación (temporizador systemd o línea cron);
- avisa a la plataforma: el servidor pasa a «agente desinstalado» y se revoca su clave. El titular de la cuenta recibe un correo;
- borra
/var/lib/neverwiped(estado, restic, el agente anterior guardado paraupdate --rollback),/var/cache/neverwiped,/etc/neverwipedy/usr/local/bin/neverwiped, y muestra cada ruta quitada o conservada. Si una ruta no puede quitarse, lo indica, conserva el binario para que puedas volver a lanzarlo y termina con error.
El registro /var/log/neverwiped.log se conserva; --remove-log también lo borra. No se toca nada más del servidor.
Tus copias: conservadas o borradas, tú eliges
| Quieres | Comando | Qué pasa con las copias |
|---|---|---|
| Conservarlas (por defecto) | neverwiped uninstall --yes o --keep-backups | Se quedan en el almacenamiento y se restauran con tu clave de recuperación (neverwiped recover en una máquina nueva). Siguen contando en tu almacenamiento, y desinstalar no cancela tu suscripción. |
| Borrarlas | neverwiped uninstall --yes --delete-backups | El titular de la cuenta recibe un correo con un enlace a la página del servidor en el panel. Se borran cuando se confirma allí (irreversible). |
Sin --yes, el comando te pregunta qué prefieres.
Por qué el servidor no puede borrarlas él mismo: las claves guardadas en el servidor pueden añadir copias, no borrarlas a petición. El único borrado en el que participan es la purga semanal según tu retención, en una ventana de una hora (purga). Es lo que protege tus copias si alguien toma el control del servidor. Por eso el borrado siempre termina con una confirmación en el panel, con sesión iniciada. También puedes no usar el comando y borrar el servidor allí directamente.
Antes de desinstalar sin --keep-config, comprueba que la clave de recuperación que guardas sigue abriendo estas copias:
neverwiped recovery-key check
Una vez borrado /etc/neverwiped, solo esa clave puede leerlas.
Conservar la configuración
Para conservar la configuración y la clave local, de modo que una reinstalación siga donde lo dejaste:
neverwiped uninstall --yes --keep-config
En una máquina copiada (VM clonada, /etc/neverwiped copiado), la desinstalación solo quita la copia local. No avisa a la plataforma ni pide ningún borrado, porque las copias pertenecen al servidor original.