Solución de copia de seguridad basada en CLI

Puedo hacer un script simple que realice la mayor parte de lo que necesito, pero me gustaría ver si ya existe una solución creada para lograr lo que deseo.

Esencialmente, en la actualidad, hay un dispositivo de almacenamiento conectado localmente en mi PC, que me gustaría compartir pronto desde mi módem doméstico. Desde este subprograma, quiero poder crear copias de seguridad (comprimidas al mismo tiempo), guardarlas en una ubicación de red (que será el recurso compartido), crear un registro de finalización exitosa y también mover copias de seguridad antiguas a otro directorio ( tal vez también elimine X días de antigüedad).

Si bien también es local, sería bueno si pudiera cifrar los archivos para la integridad de los datos y tal vez también editar los permisos del directorio. Para los archivos en el directorio, me gustaría restringir el acceso de los usuarios según las cuentas de usuario; espero poder editar los permisos según la interfaz de usuario (con un nombre de usuario y una contraseña) ya que no estoy ejecutando un dominio o grupo en el hogar y no puedo usar permisos NT/Share (que yo sepa).

Actualmente estaba pensando en:

  • Uso Robocopypara la transferencia y salida de datos.
  • Uso 7Zipfm.exepara la compresión y también la protección con contraseña.
  • Usar icalcspara administrar los permisos en el archivo

Luego, simplemente use el net usecomando para asignar la ruta UNC a las PC, distribuya el script y luego tenga un proceso de copia de seguridad en su lugar.

Con la esperanza de mejorar este proceso, me gustaría:

  • Poder administrar versiones, eliminar X días anteriores (sé que puedo usar algún método de última modificación para hacer esto con Robocopy)
  • Ser capaz de programar esto para que se ejecute a la hora X, o si se pierde (puedo hacerlo a través del Programador de tareas, lo sé)

Por otras razones, no quiero tener una GUI para esta herramienta (o al menos, una existente fuera de una terminal). Entonces, herramientas como Cobian Backup no son una opción válida.

Por último, algunas características avanzadas que me encantaría incorporar serían:

  • Nombrar la copia de seguridad según la fecha
  • Tener un recurso compartido diferente para un usuario y hacer que el script/applet lo determine automáticamente en función del usuario que inició sesión (algunas PC tienen varias cuentas)
  • Tal vez verificar para asegurarse de que se pueda alcanzar el destino, o si hay otro en línea (cambiaré dispositivos en caliente de vez en cuando)

Si alguien tiene scripts/programas que coincidan con esto, hágamelo saber, de lo contrario, seguiré haciendo un script.

TL; DR : opción de copia de seguridad CLI en profundidad que tiene funciones similares a Cobian Backup.

Creo que rsnapshot haría el trabajo. Lo instalé en mi OpenWRTenrutador y realicé todas las copias de seguridad en la unidad de disco conectada al enrutador. Se usa rsyncdebajo del capó y es muy *Unixy*natural. Lo supe por primera vez después de leer esta reseña de Eric Raymond titulada rsnapshot: you’re doing it right!: esr.ibiblio.org/?p=3124http://esr.ibiblio.org/?p=3124
@ArkadiuszDrabczyk Gracias por la sugerencia. Desafortunadamente, OpenWRT no es compatible con mi dispositivo (usando el módem/enrutador proporcionado por el ISP, ya que supuestamente no son compatibles con otros dispositivos). No tengo ningún reparo en comprar y configurar un dispositivo, pero me gustaría que fuera la última opción. Pero siéntase libre de hacer que esa sea una respuesta, merece un marcado y también beneficiaría a otros que intentan tener éxito con esto.

Respuestas (1)

Parece que usa Windowsy busca una Windowssolución basada en, por lo que es posible que esta respuesta no se aplique a usted en absoluto.

Creo que eso rsnapshotharía el trabajo. Lo instalé en mi OpenWRTenrutador y realicé todas las copias de seguridad en la unidad de disco conectada al enrutador. Se usa rsyncdebajo del capó y es de naturaleza muy Unixy . Lo supe por primera vez después de leer esta reseña de Eric Raymond titulada rsnapshot: ¡lo estás haciendo bien! . Puede crear un árbol de instantáneas como esta:

/mnt/disk/snapshots $ ll
drwxr-xr-x    3 root     root        4.0K Jun 24 00:07 monthly.2
drwxr-xr-x    3 root     root        4.0K Jul 25 00:07 monthly.1
drwxr-xr-x    3 root     root        4.0K Aug 25 00:06 monthly.0
drwxr-xr-x    3 root     root        4.0K Sep 24 00:06 daily.6
drwxr-xr-x    3 root     root        4.0K Sep 25 00:06 daily.5
drwxr-xr-x    3 root     root        4.0K Sep 26 00:06 daily.4
drwxr-xr-x    3 root     root        4.0K Sep 27 00:06 daily.3
drwxr-xr-x    3 root     root        4.0K Sep 28 00:07 daily.2
drwxr-xr-x    3 root     root        4.0K Sep 29 00:07 daily.1
drwxr-xr-x    3 root     root        4.0K Sep 30 00:06 daily.0
drwxr-xr-x    3 root     root        4.0K Sep 30 12:12 hourly.5
drwxr-xr-x    3 root     root        4.0K Sep 30 16:12 hourly.4
drwxr-xr-x    3 root     root        4.0K Sep 30 20:13 hourly.3
drwxr-xr-x    3 root     root        4.0K Oct  1 00:05 hourly.2
drwxr-xr-x    3 root     root        4.0K Oct  1 04:12 hourly.1
drwxr-xr-x    3 root     root        4.0K Oct  1 08:12 hourly.0

Se puede invocar desde cron:

$ crontab -e
0 */4 * * *       /usr/bin/rsnapshot hourly
30 23 * * *       /usr/bin/rsnapshot daily
15 22 1 * *       /usr/bin/rsnapshot monthly

Sin embargo, para cumplir con sus requisitos Be able to schedule this to run at X time, or if missed (I can do this through Task Scheduler I know), debe optar por anacronalgo similar que pueda posponer la ejecución de la tarea hasta que el servidor vuelva a funcionar.