El comando rsync es muy rápido para copiar y permite que copiemos a través de SSH de manera segura de una PC para otra, además de que con los parámetros adecuados permite que la copia se pueda reiniciar si es interrumpida. Aquí tienen un ejemplo:
rsync -e ssh -agEvz /home/datos [email protected]:/data
Aquí lo que estamos haciendo es copiar desde nuestra PC la información de /home/datos para /data de una PC remota con IP 192.168.0.2 y a través del usuario root de esa PC remota.
Cuando pusimos el comando anterior se nos pide la contraseña del usuario root de la PC remota, luego se inicia la copia, si la misma es interrumpida puede ser reiniciada corriendo el mismo comando, y la copia se reinicia donde mismo se había quedado.
Esto es muy valioso para los administradores de servidores.
Ahora, si necesitamos hacer salvas diarias y tenemos un script que se configuró para que se ejecutara a una hora del día en específico podemos hacer que dos servidores se autentiquen sin tener que introducir el password manualmente, sino mediante la compartición de claves. Así el comando anterior pudiera correrse de madrugada y no requeriría de la intervención nuestra.
Pasos:
1. Generarr tu clave pública de ssh, esto se hace en la máquina cliente que va a salvar datos en un server
ssh-keygen -t rsa
Aprieta enter dos veces Eso te genera tu clave pública para ssh en tu carpeta personal en /.ssh/id_rsa.pub
2. Exportar para el servidor remoto tu clave pública
Ahora debes decirle al server donde vas a hacer las salvas, que importe esa clave pública tuya, esto permite que cuando vayas a sincronizar carpetas con rsync desde esta máquina local no te pida pass porque ya estará autorizada, gracias a que exportaste tu clave pública
ssh-copy-id -i ~/.ssh/id_rsa.pub user_en_elServer@IpdelServer
Ejemplo:
ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]
Listo una vez que tengas esto puedes realizar salvas automáticas al servidor 192.168.0.2.
Las salvas las haríamos con el comando rsync tal y como se muestra al principio de este post.
Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:56.0) Gecko/20100101 Firefox/56.0
En el ejemplo que pones, en caso de que sean carpetas debes añadir al final el simbolo «/» (trailing slash) para que sincronice ambas carpetas.
Si es una copia «importante» es decir que te interesa que verifique los contenidos y no por fechas solamente debes usar la opción «-c» (checksum) que comprueba que los archivos sean los mismos, no importa que la fecha sea diferente. Esta opción hace que sea más lenta, pero en casos de información valiosa, bien vale la pena.
Hay una opción que es de buena ayuda cuando son volumenes grandes de datos «–progress» que indica en todo momento ficheros restantes etc. También si usas una version de rsync moderna (requiere version 3.1.0 protocol version 31) probar la opción «–info=progress2» que da una idea del progreso global de la copia, ya que la primera mencionada en este párrafo es por cada fichero.
Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:57.0) Gecko/20100101 Firefox/57.0
scp también suele utilizarse, si bien no es tan eficiente como rsync