Con este comando se pueden copiar ficheros del servidor al local preservando los enlaces simbólicos y la fecha de creación de los archivos.
rsync -avz -e 'ssh -p22' --times usuario@192.168.1.10:/ruta/web/web1.com/ .
los parámetros significan:- a, es para que copie enlaces simbólicos y recursivamente, similar a poner -rl
- v, para que se muestre por pantalla lo que va copiando
- z, para que comprima la descarga
- e, es para realizar la copia por ssh seguido del puerto correspondiente
- times, para que respete las fechas de cada fichero y no ponga la hora de la copia.
Os dejo un par de artículos sobre copiar ficheros:
- Copiar ficheros respetando la fecha de actualización
- Copiar fichero con scp entre servidores desde el terminal
Ahora vamos a automatizar esto y ejecutar el comando de copia desde un archivo, así podemos copiar diferentes directorios del servidor y también podríamos programar el script para que las copias se realicen automáticamente a una determinada hora.
El script lo dejo comentado, en este ejemplo copio dos directorios del servidor a mi pc local.
# Obtenemos la fecha en formato 20220312 para crear el directorio del backup
DATE_FILE=`date +%Y%m%d`
# Obtenemos la ruta del script, por ejemplo /ruta/del/script/fichero.sh
SCRIPT=$(readlink -f $0)
# Obtenemos solo el directorio sin el script
SCRIPTPATH=`dirname $SCRIPT`
# La IP del servidor desde donde vamos a copiar
IP='192.168.1.10'
# Creamos el directorio de backup y entramos dentro
echo "Creando directorio de backup"
mkdir ${DATE_FILE}
cd ${DATE_FILE}
# Dentro del directorio de backup creamos el primer directorio de los datos que vamos a copiar
# Y entramos dentro
echo "Creando directorio de backup1"
mkdir backup_1
cd backup_1
# Realizamos la copia del directorio del servidor que queremos al directorio backup_1
# que en este caso se representa con un . porque es el directorio en que nos encontramos
rsync -avz -e 'ssh -p22' --times usuario@${IP}:/ruta/web/web1.com/ .
# Volvemos al directorio de la fecha para crear el segundo directorio de backup, backup_2
cd ${SCRIPTPATH}/${DATE_FILE}
echo "Creando directorio de backup1"
mkdir backup_2
cd backup_2
# Y realizamos la copia como en el anterior
rsync -avz -e 'ssh -p22' --times usuario@${IP}:/ruta/ficheros/ .
echo "END"
Y esto es todo amigos!!
Gracias por seguirme y leerme, espero que les haya ayudado
Saludos
Alex.