usando rsync a través de ssh seguro en un trabajo cron

usando rsync a través de ssh seguro en un trabajo cron

Estoy intentando configurar un script de shell en Debian GNU/Linux para hacer una copia de seguridad de un directorio y subdirectorios en un NAS remoto que ejecuta Linux a través de SSH. Esta conexión debe estar cifrada.

He probado un par de enfoques diferentes que involucran rsync rshy demás, pero sin suerte. Sé cómo configurar crontab, pero necesito un script que se ejecute desatendido (es decir, que no solicite una contraseña).

¿Alguien podría ayudarme?

EDITAR: ahora puedo iniciar sesión correctamente sin contraseña.

El problema ahora es hacer que rsync copie los archivos /backups/en[remote system]:/backups/

Solo copia una carpeta de /backups/a [remote system]:/backups/.

EDITAR: Parece que el sistema local tiene un /backups y otro /backup... Lo he probado con /backups cuando debería haber usado /backup...

Comando final:rsync -avzr -e ssh /backup/ admin@[IP]:/backups/

Respuesta1

rsync desde 2.6.x utiliza de forma predeterminada ssh para transferencias. Por lo tanto, ya está solucionado siempre que su rsync NAS remoto sea compatible.

En cuanto a las transferencias desatendidas sin contraseña, configure la autenticación basada en clave ssh para el usuario con el que está ejecutando el cron y eso debe hacerse. Así es como lo configuras:http://www.cyberciti.biz/tips/ssh-public-key-based-authentication-how-to.html

Respuesta2

También puedes pasar este indicador a rsync para usar un archivo para la contraseña:

--archivo-contraseña

Puede cambiar fácilmente el archivo a 400 para que nadie más que su usuario pueda leer ese archivo (y el root, por supuesto)

Respuesta3

Sincronización de clave Ssh. Dijiste que esto funcionaba, pero pensé en publicar los pasos de todos modos.

ssh en su NAS

Para hacer la llave

ssh-keygen -t rsa on local machine 

Luego sincronice con la computadora desde la que realizará la copia de seguridad

cat ~/.ssh/id_rsa.pub | ssh user@hostname    ‘cat>>.ssh/authorized_keys’

Script de copia de seguridad de Rync: esto creará una carpeta de copia de seguridad para hoy, luego sincronizará los archivos de ayer con los de hoy, esto reducirá la carga en la red y luego sincronizará los archivos de hoy para realizar la copia de seguridad.

#!/bin/sh

mkdir -p /storage/backups/`date +\%Y-\%m-\%d`-`date +\%A`/$host/$username

rsync -avz /storage/backups/`date --date=yesterday +\%Y-\%m-\%d`-`date--date=yesterday    +\%A`/$host/$username/ /storage/backups/`date +\%Y-\%m-\%d`-`date +\%A`/$host/$username/

rsync -avz -e ssh  /home/username/ /storage/backups/`date +\%Y-\%m-\%d`-`date +\%A`/$host/$username/

También necesitará un script que limpie las copias de seguridad: esto mantendrá una copia de seguridad de una semana. Puedo confirmar que esto funciona en el nas listo de Netgear.

#!/bin/sh

# Definitions
sevendaysago=$(date --date='6 days ago' +%Y-%m-%d-%A)

# Delete backups from 7 days ago
rm -rf /storage/backups/$sevendaysago

necesitarás ejecutar esto para que los scripts se puedan ejecutar

chmod u+x script.sh

en cron solo necesitarás agregar vía crontab -e

@daily sh backupscript
1 17 * * * sh dailycleanup

información relacionada