¿Cómo puedo crear un script de copia de seguridad remota con Rsync?

Procédure

¿Para qué sirve Rsync?

Rsync permite sincronizar archivos a través de la línea de comandos, de modo que puede realizar copias de seguridad de archivos de un lugar a otro sincronizándolos según el origen.

El siguiente script le permitirá realizar una copia de seguridad completa una vez al mes y una copia de seguridad parcial una vez a la semana.

¿Cómo puedo crear un script de copia de seguridad remota con Rsync?

El siguiente script le permitirá crear un script de copia de seguridad remota con Rsync. El script comprobará la presencia de la carpeta de origen, probará la accesibilidad del servidor y creará una nueva carpeta cada mes en la que insertará una copia de seguridad completa.

#!/bin/sh month=`fecha +%B` day=`fecha +%d-%m-%Y` hour=`fecha +%T` log="/home/usuario/logs_backups" local="/carpeta/usuario" remote="/archivos/backups_$mes/" hostssh="ip_server" userssh="login" counter=5 retention=`fecha +%B --fecha='hace 1 mes'` name() { echo "-------------------------------------------------------------" > $log/día_backups > $log/$day_backup.log echo -e "$copia de seguridad local de $(fecha +%d-%B-%Y)" >> $log/$day_backup.log echo "-------------------------------------------------------------" ¡>> $log/$day_backup.log }# Si el directorio que contiene los registros no existe, se creará.if [ ! -d $log ];then mkdir $log fi # Comprobamos la presencia de la carpeta de origen Y que el servidor responde al pingrecus=$(ping -c $counter $hostssh | grep 'received' | awk -F',' '{ print $2 }' | awk '{print $1 }') > /dev/null 2>&1 if [[ ! -d $local ]] && [[ $recus -eq 0 ]];then name echo -e "$day-$hour :\n" >> $log/backup_$day.log echo -e "$local ya no existe o es inaccesible.\nServidor inaccesible ($hostssh : $contador de paquetes transmitidos, $recus paquetes recibidos).\nNo se ha realizado ninguna copia de seguridad." >> $log/sauvegarde_$jour.log exit# Sólo comprobamos la presencia de la carpeta deorigen elif [ ! -d $local ];then name echo -e "$jour-$heure : $local n'existe plus ou est inaccessible.\nAuc aucune sauvegarde effectuée." >> $log/sauvegarde_$jour.log exit# Sólo comprobamos el ping del servidorelif [ $recus -eq 0 ];then name echo -e "$jour-$heure : Serveur inaccessible ($hostssh : $compteur paquets transmises, $recus paquets reçus).\nNo se ha realizado ninguna copia de seguridad." >> $log/sauvegarde_$jour.log exit fi echo "-------------------------------------------------------------" > $log/backup_day.log echo "Copia de seguridad de $local desde $(fecha +%d-%B-%Y)" >> $log/backup_day.log echo "-------------------------------------------------------------" >> $log/backup_$day.log # Hora de inicio de la transferencia en el registro echo "Hora de inicio de la copia de seguridad: $(fecha +%T)" >> $log/backup_$day.log echo "-------------------------------------------------------------" >> $log/backup_$day.log # Transferencia de archivosrsync -avz --stats --protect-args --delete-after -e ssh $local $userssh@$hostssh:$distant >> $log/backup_$day.log # -a : modo archivo ( equivalente -rlptgoD ). # -z : compresión de datos durante la transferencia.
-e : para especificar el uso de ssh # -- stats : da información sobre la transferencia (número de ficheros...). # --protect -args : si necesita transferir un nombre de fichero que contenga espacios, puede especificarlo con esta opción. # --delete-after : borra los ficheros que ya no existen en el origen tras la transferencia a la carpeta de destino.
status=$? echo "" >> $log/day_backup.log# rsync return codescase $status in 0) echo Éxito >> $log/day_backup.log; 1) echo Error de sintaxis o de uso >> $log/day_backup.log; 2) echo Incompatibilidad de protocolo >> $log/day_backup.log;; 3) echo Errores al seleccionar ficheros y directorios de entrada/salida >> $log/sauvegarde_$jour.log;; 4) echo Acción no soportada: intento de manipular ficheros de 64 bits en una plataforma que no los soporta ; o una opción soportada por el cliente pero no por el servidor. >> 5) echo Error al iniciar el protocolo cliente-servidor >> $log/sauvegarde_$jour.log;; 6) echo daemon unable to write to log file >> $log/sauvegarde_$jour.log;; 10) echo I/O socket error >> $log/sauvegarde_$jour.log; 11) echo I/O file error >> $log/sauvegarde_$jour.log;; 12) echo Error en el flujo de datos del protocolo rsync >> $log/save_$day.log;; 13) echo Error en el diagnóstico del programa >> $log/save_$day.log;; 14) echo Error en el código IPC >> $log/save_$day.log;; 20) echo SIGUSR1 o SIGINT recibido >> $log/save_$day.log;; 21) echo "Un error devuelto por waitpid()" >> $log/save_$day.log;; 22) echo Error asignando buffers de memoria principal >> $log/sauvegarde_$jour.log;; 23) echo Transferencia parcial debido a un error >> $log/sauvegarde_$jour.log;; 24) echo Transferencia parcial debido a la desaparición de un fichero fuente >> $log/sauvegarde_$jour.log;; 25) echo Se ha alcanzado el límite --max-delete >> $log/sauvegarde_$jour.log;; 30) echo Se ha excedido el tiempo máximo de espera al enviar/recibir datos >> $log/sauvegarde_$jour.log;; 35) echo Se ha excedido el tiempo de espera al esperar una conexión >> $log/sauvegarde_$jour.log;; 255) echo Error inexplicable >> $log/sauvegarde_$jour.log;; esac echo "-------------------------------------------------------------" >> Hora final en elregistro echo "Hora final de copia de seguridad: $(fecha +%T)" >> $log/backup_$day.log echo "-------------------------------------------------------------" >> $log/backup_$day.log# Las copias de seguridad se borran según la retención.ssh $userssh@$hostssh rm -rf "backups_$retention" exit

fuente : GitHub tuxmika

Conclusión

Ahora puede crear un script de copia de seguridad remota utilizando Rsync para transferir archivos y carpetas a su espacio de copia de seguridad en línea utilizando LWS. Puedes ejecutar tu script a través de una tarea cron para que se inicie una vez a la semana.

¡No dudes en compartir tus preguntas y comentarios!

Valora este artículo :

4,8/5 | 5 opinión

Este artículo le ha sido útil ?

Article utile

Article non utileNo

Vous souhaitez nous laisser un commentaire concernant cet article ?

Si cela concerne une erreur dans la documentation ou un manque d'informations, n'hésitez pas à nous en faire part depuis le formulaire.

Pour toute question non liée à cette documentation ou problème technique sur l'un de vos services, contactez le support commercial ou le support technique

MerciMerci ! N'hésitez pas à poser des questions sur nos documentations si vous souhaitez plus d'informations et nous aider à les améliorer.


Vous avez noté 0 étoile(s)

Artículos similares

2mn lectura

¿Cómo añado una clave RSA al servicio de unidad SCP de Rsync?

1mn lectura

¿Cómo puedo utilizar Rsync para hacer una copia de seguridad de un sitio web Ispconfig?

0mn lectura

¿Cómo hago una copia de seguridad de mi sitio con LWS Drive?

4mn lectura

utilidad backup2l restore


Formule una pregunta al equipo de LWS y a su comunidad