Copias de seguridad incrementales para Linux Mint (Cinnamon), en un único script de bash. Fácil de usar y programar para que tus archivos (fotos, documentos, programas, etc) siempre esten guardados y resincronizados con el origen de archivos que se pretende copiar. Nunca te equivocarás con los archivos que tienes que actualizar en tu disco externo, nunca tendrás que pensar en aquel archivo que modificaste pero que no has actualizado en tu carpeta de copia de seguridad del disco externo. Todo eso y más resuelve este pequeño programa
Nota sobre el idioma: este proyecto (script, menús, documentación) está en español. Si veo interés de gente que lo necesite en inglés, prepararé una traducción — más detalles al final del documento, en Roadmap.
Simple-Backup es un script interactivo que copia tus carpetas personales (Documentos, Música, Imágenes, Vídeos, Descargas…) a otro disco —normalmente uno externo, aunque también puede ser un segundo disco interno— usando rsync. No crea una imagen del disco: copia archivos reales, navegables, que puedes abrir directamente desde el explorador de archivos en cualquier PC. Además, deja crear snapshots completos del sistema con Timeshift y programar todo por cron, sin tener que tocar la terminal cada vez.
Hay dos formas habituales de hacer copias de seguridad en Linux: crear una imagen del disco (con dd, Clonezilla…) o usar una herramienta de snapshots del sistema (Timeshift, Déjà Dup…). Ambas son útiles, pero ninguna resuelve bien el caso más común: “quiero que mis fotos, documentos y música estén también en el disco externo, tal cual, por si el ordenador muere mañana”.
Con una imagen no puedes entrar y coger un solo archivo sin restaurarla entera. Simple-Backup, en cambio, usa rsync para copiar solo lo nuevo o modificado en cada ejecución, dejando en el disco externo la misma estructura de carpetas que tienes en casa. Enchufas el disco en cualquier ordenador y ahí están tus archivos, sin depender de ningún software para recuperarlos.
Lo que aporta el script encima de un simple rsync -a a mano:
rsync para no llenar la pantalla de errores de permisos que no son reales..sh, le das permisos y ya está.xdg-user-dirs, así que reconoce Documentos, Música, Imágenes, Vídeos, Descargas, Escritorio, Plantillas y Público en el idioma que tengas configurado en el sistema.zenity instalado) o escribiendo la ruta directamente si no..cache, *.tmp, *.part, *.crdownload, *.download, node_modules, .thumbnails, lost+found) que puedes ampliar o editar desde el propio menú.rsync si el disco está en FAT32, exFAT o NTFS (sistemas que no soportan permisos ni propietario de Unix), para que no aparezcan avisos de “operación no permitida” por algo que no es un fallo real. Si el destino es FAT32, también avisa antes de copiar si hay archivos de más de 4 GiB (ese formato no los admite), y los excluye de forma limpia para que la copia no se quede a medias.lsblk: muestra etiqueta, tamaño y de qué tipo es cada una. Eliges la que quieras con un número, escribiendo la ruta a mano, o con el selector gráfico si tienes zenity.--delete), desactivado por defecto. Actívalo solo si quieres que el destino sea una copia exacta del origen, borrados incluidos.Aparte de tus archivos personales, el menú incluye acceso directo a Timeshift para snapshots del sistema (el sistema operativo entero, no tus documentos): crear una snapshot al momento, ver las existentes, abrir la interfaz gráfica, o configurar en qué disco/partición se guardan. Si no tienes Timeshift instalado, el script se ofrece a instalarlo.
--auto: ejecuta el backup ya configurado sin abrir ningún menú, pensado para lanzarse solo por cron. Si el disco externo no está conectado o falta configuración, no falla en silencio: lo deja registrado en el log y (si hay sesión de escritorio) manda una notificación.rsync, xdg-user-dirs, y opcionalmente zenity).Requisitos:
| Paquete | Necesario para | ¿Obligatorio? |
|---|---|---|
bash ≥ 4.3 |
Ejecutar el script | Sí |
rsync |
Hacer las copias | Sí |
xdg-user-dirs |
Detectar tus carpetas personales | Sí |
zenity |
Selector gráfico de carpetas | No (si falta, se escriben las rutas a mano) |
libnotify-bin |
Notificaciones de escritorio | No |
timeshift |
Snapshots del sistema | No, solo si usas esa función |
cron |
Copias programadas | No, solo si usas esa función |
Si te falta algo de lo obligatorio, el propio script lo detecta al arrancar y te ofrece instalarlo con apt.
Pasos:
git clone https://github.com/filonux/Simple-Backup.git
cd simple-backup
chmod +x script/simple-backup.sh
./script/simple-backup.sh
Con eso ya se lanza el asistente de primer uso.
Menú interactivo (uso normal):
./script/simple-backup.sh
El menú principal tiene seis opciones: configurar rutas de origen y destino, ejecutar la copia ahora, crear una snapshot del sistema, programar copias automáticas, ver el historial de logs, y activar o desactivar el modo espejo.
De cero a copias automáticas, paso a paso:
En resumen: clonas el repositorio, contestas un par de preguntas y eliges el disco de una lista numerada. En un par de minutos tienes copias automáticas funcionando, sin haber escrito una línea de rsync ni haber tocado el crontab a mano.
Otros comandos:
./script/simple-backup.sh --auto # Ejecuta el backup ya configurado, sin menús (para cron)
./script/simple-backup.sh --version # Muestra la versión instalada
./script/simple-backup.sh --help # Muestra la ayuda
No hace falta que llames tú mismo a --auto: si programas una copia desde el menú (opción 4), el script se encarga de añadir la línea correspondiente al crontab.
Desarrollado y probado en Linux Mint 22.3 (Cinnamon). Al ser bash + rsync + herramientas estándar de GNU/Linux, debería funcionar sin cambios en cualquier distribución basada en Debian/Ubuntu (otras ediciones de Mint, Ubuntu, Pop!_OS, etc.), incluso con otros entornos de escritorio: las partes que dependen de Cinnamon en concreto son mínimas (principalmente los iconos de las notificaciones).
Un matiz: la instalación automática de dependencias que falten usa apt, así que en distribuciones que no lo usen (Fedora, Arch…) tendrás que instalar tú mismo rsync, xdg-user-dirs y, si quieres, zenity y timeshift con el gestor de paquetes correspondiente. Una vez instalados, el resto del script funciona igual.
Simple-Backup es un script, así que por defecto se lanza desde la terminal. Si prefieres tenerlo como una aplicación normal, con su propio icono en el menú de Cinnamon y/o en el escritorio, puedes usar Scriptya, otra herramienta del mismo autor.
Scriptya convierte cualquier script en una aplicación independiente, con icono propio, integrada en el menú y/o el escritorio. Y de paso, desde ese mismo lanzador puedes volver a abrir Scriptya en cualquier momento para actualizar el script envuelto o desinstalar la aplicación, sin líneas de comandos.
Simple-Backup no toca nada fuera de tu carpeta personal salvo el propio disco de destino que tú elijas:
| Qué | Dónde |
|---|---|
| Configuración (carpetas, destino, exclusiones…) | ~/.config/simple-backup/config.conf |
| Logs de cada copia | ~/.local/share/simple-backup/logs/ |
| Bloqueo de ejecución | ~/.config/simple-backup/backup.lock |
El archivo de configuración se genera y se sobrescribe automáticamente desde el menú: no hace falta (ni se recomienda) editarlo a mano.
Nada urgente, pero algunas ideas para cuando haya tiempo (o interés de la gente que lo use):
.deb opcional, para quien prefiera instalar y actualizar con apt en vez de clonar el repositorio. El .sh suelto seguirá funcionando igual para quien lo prefiera así.systemd --user timers, para quien prefiera no depender de cron.Publicado bajo licencia GNU GPLv3. Consulta el archivo LICENSE para el texto completo.
Las aportaciones son bienvenidas. Antes de abrir una issue o un pull request, échale un vistazo a CONTRIBUTING.md y al código de conducta. Para reportar un fallo o pedir una función nueva, usa las plantillas correspondientes en .github/ISSUE_TEMPLATE/. Si encuentras un problema de seguridad, sigue el proceso descrito en SECURITY.md en vez de abrir una issue pública.
Hecho por Filonux.