Automatización de carpetas rsync

0

Tengo una carpeta en el servidor remoto, a la que me estoy conectando a través de SSH. Cuando necesito sincronizar las carpetas, estoy usando el acceso manual a través de scp. (Estoy sincronizando mi carpeta con la carpeta en el servidor.)

¿Cómo puedo configurar este trabajo para que se realice automáticamente con un script o algo así, para que sincronice las carpetas automáticamente e inserte la contraseña automáticamente?

¡Gracias!

Accelerate to the Infinity
fuente

Respuestas:

0

SSH sin contraseña se hace generalmente con autenticación de clave pública . Normalmente, cifraría la clave privada con una contraseña, sin embargo, como desea ejecutar una secuencia de comandos de sincronización desatendida, le recomiendo crear las claves como otro usuario y ejecutar la secuencia de comandos shell como ese usuario.

En cliente:

mkdir ~/.ssh
chmod 700 ~/.ssh
ssh-keygen -q -f ~/.ssh/id_rsa -t rsa
# Press enter twice when asked for a passphrase

Dado que los Mac no tienen el ID de copia de SSH, debe hacerlo manualmente:

scp ~/.ssh/id_rsa.pub [email protected]:~

En el servidor

mkdir ~/.ssh
chmod 700 ~/.ssh
# Append or copy public key to authorized keys file:
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
rm ~/id_rsa.pub

UNA script de shell es un archivo de texto con un conjunto de permisos ejecutables que comienza con

#!/bin/sh
# you can then do any commands that you do manually, ex:
# (See levy's answer for the rsync command to use)
rsync /home/Anders/ 192.168.3.5:~/backup/location

Para ejecutar un script periódicamente puedes usar cron . Digamos que guardamos ese script en /home/Anders/bin/sync.sh. Luego correrías:

env EDITOR=nano crontab -e

como el usuario que desea ejecutar el script cron como.

En el editor de texto que aparece deberías ingresar:

#Minute Hour  Day Month Year  Command  
0        13   *   *     *     /home/Anders/bin/sync.sh

Lo anterior se sincronizaría todos los días en el minuto 0 de la hora 14 (comienza a contar desde cero), ajústese a sus necesidades.

Otra opción podría ser SSHFS Es decir, lo montaría y puede operar en él como un directorio normal.

Anders J
fuente
0

Para poder rsync sin una contraseña, necesitará crear claves privadas y públicas ssh. Y pegue su clave pública en el archivo ~ / .ssh / authorized_keys en su servidor remoto. http://www.thegeekstuff.com/2008/11/3-steps-to-perform-ssh-login-without-password-using-ssh-keygen-ssh-copy-id/

ssh-keygen
ssh-copy-id -i ~/.ssh/id_rsa.pub remote-host # you could also just login and create the authorized_keys file and paste your public key. 
ssh remote-host

Para el rsync -avz --delete -e ssh ~/dir/ user@server:/home/dir

Utilizo --delete para asegurarme de que todo sea siempre igual, pero elimínelo si no desea hacerlo. En este punto, coloque el comando rsync en un script de bash y póngalo en cron o haga una ejecución cuando lo desee.

levy
fuente