Hay muchas formas de organizar la copia de seguridad en servidores CentOS / Debian / Ubuntu: utilidades gratuitas, scripts autoescritos utilizando tar, sistema de copia de seguridad bacula y mucho más. Todo esto de una forma u otra lo he usado o estoy usando en mi trabajo.
Hoy quiero compartir con ustedes mi método para organizar una forma simple, conveniente y rápida de configurar la copia de seguridad incremental usando la popular utilidad rsync en servidores que CentOS / Debian / Ubuntu. El método funciona igualmente en estos sistemas, con pequeñas diferencias solo en la instalación de rsync en sí, que mencionaré por separado para cada sistema.
Instalación de rsync en CentOS 6
Instalar en pc xinetd para ejecutar automáticamente rsync:
# yum install -y xinetd
Instalamos rsync directamente:
# yum install -y rsync
Editando la configuración de rsync para xinetd:
# mcedit /etc/xinetd.d/rsync
En la configuración encontramos la línea deshabilitar = sí y cámbialo a No :
disable = no
Ejecutando xinetd:
# /etc/init.d/xinetd start
Y agréguelo a la ejecución automática:
# chkconfig xinetd on
Compruebe si xinetd 873 escucha en el puerto rsync:
# netstat -lnpt | grep 873 tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 1431 / xinetd
De acuerdo, puede comenzar a configurar rsync.
Ponemos rsync:
# yum install -y rsync
Agregar a la copia de seguridad automática:
# systemctl enable rsyncd ln -s '/usr/lib/systemd/system/rsyncd.service' '/etc/systemd/system/multi-user.target.wants/rsyncd.service'
Comprobación de la copia de seguridad automática:
# systemctl list-unit-files --type service | grep rsyncd rsyncd.service enabled
Ejecute rsync:
# systemctl start rsyncd
Comprobamos cómo empezó:
# netstat -tulpn | grep rsync tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 2782 / rsync
De acuerdo, puede comenzar a configurar rsync.
Instalación de rsync en Debian / Ubuntu
Instale rsync:
# apt-get install -y rsync
Regla de configuración:
# mcedit / etc / default / rsync
Encuentra la cuerda RSYNC_ENABLE = falso y cámbialo a cierto :
RSYNC_ENABLE = true
Ejecute rsync:
# /etc/init.d/rsync start [ok] Starting rsync daemon: rsync.
Compruebe lo que funciona:
# netstat -tulpn | grep rsync tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 1767 / rsync
De acuerdo, puede comenzar a configurar rsync.
Configurando rsync
Ahora proceda a la configuración. La lógica de nuestras copias de seguridad será la siguiente. Al principio, hacemos una copia de seguridad completa de la información que nos interesa en el Actual carpeta. Luego, una vez al día, verificamos el archivo existente con la fuente y lo volvemos a actualizar, sobrescribiendo todos los archivos modificados, pero no los eliminamos, sino que los agregamos al incremento carpeta, donde todos los días se crea una carpeta con un nombre en forma de fecha, archivos para el día actual.
Por lo tanto, siempre tendremos un archivo completo, actual en el momento de la última sincronización, más un conjunto de carpetas para cada día con los archivos cambiados ese día. ¿Cuántos días se pueden almacenar si es necesario?
Resulta que tenemos una imagen así:
Comencemos a implementar. En primer lugar, configure rsync en los servidores de fuentes de información, de los cuales recopilaremos datos para realizar copias de seguridad.
Cree el archivo de configuración de rsync:
# mcedit /etc/rsyncd.conf
pid file = /var/run/rsyncd.pid log file = /var/log/rsyncd.log transfer logging = true munge symlinks = yes # folder source for backup [data] path = / data uid = root read only = yes list = yes comment = Data backup Dir auth users = backup secrets file = /etc/rsyncd.scrt
Cree un archivo con las credenciales para la conexión:
# mcedit /etc/rsyncd.scrt
backup: 12345
donde el respaldo es el nombre de usuario, 12345 es la contraseña.
Hacemos acceso de lectura solo a raíz, de lo contrario, rsync no se iniciará:
# chmod 0600 /etc/rsyncd.scrt
Después de la configuración, reinicie rsync.
En Centos 6:
# /etc/init.d/xinetd restart
En Centos 7:
systemctl restart rsyncd
En Debian / Ubuntu:
# /etc/init.d/rsync restart
Ahora vaya al receptor del servidor, que almacenará copias de seguridad de los servidores de origen. Allí creamos un script de respaldo incremental usando rsync:
# mcedit /root/bin/backup-server1.sh
#! / bin / bash date # Folder, where we will put the archives syst_dir = / backup / # Name of the server that is archived srv_name = server1 # The address of the server that is archived srv_ip = 10.10.1.55 # The rsync user on the server that is archived srv_user = backup # Resource on the server for backup srv_dir = data echo "Start backup $ {srv_name}" # Create a folder for incremental backups mkdir -p $ {syst_dir} $ {srv_name} / increment / # Run directly backup with parameters / usr / bin / rsync -a -delete -password-file = / etc / rsyncd.scrt $ {srv_user} @ $ {srv_ip} :: $ {srv_dir} $ {syst_dir} $ {srv_name} / current / - -backup --backup-dir = $ {syst_dir} $ {srv_name} / increment / `date +% Y-% m-% d` / # Clean folders with incremental archives older than 30 days / usr / bin / find $ {syst_dir} $ {srv_name} / increment / -maxdepth 1 -type d -mtime +30 -exec rm -rf {} ; date echo "Finish backup $ {srv_name}"
Hacemos que el script sea ejecutable:
# chmod 0744 /root/bin/backup-server1.sh
Cree un archivo con una contraseña para la autorización en el servidor de origen:
# mcedit /etc/rsyncd.scrt
12345
Hacemos acceso de lectura solo a root, de lo contrario, rsync devolverá un error:
ERROR: el archivo de contraseña no debe ser accesible para otras personas
Corrija esto:
# chmod 0600 /etc/rsyncd.scrt
Eso es todo, ahora puede ejecutar el script y esperar a que se ejecute. Queda por agregarlo al maíz:
# mcedit / etc / crontab
30 23 * * * root /root/bin/backup-server1.sh
Normalmente creo varios scripts para cada servidor por separado. Luego combino su lanzamiento en un script común y lo agrego al cron. Y luego, según sea necesario, lo edito, agrego o elimino el servidor.
Especificamos en la configuración de registro en el archivo. /var/log/rsyncd.log. Es necesario configurar la rotación de este registro para que no crezca hasta el infinito. En servidores de archivos grandes, crecerá muy rápidamente a cientos de megabytes o más.
Para ello, cree un archivo con la configuración de rotación en el /etc/logrotate.d carpeta:
# mcedit /etc/logrotate.d/rsyncd /var/log/rsyncd.log { size = 500k compress rotate 4 missingok notifempty }
Con esta configuración, la rotación se producirá cada vez que el archivo de registro supere el tamaño de 500 KB. Se almacenarán 4 versiones del archivo de registro. Puede cambiar esta configuración a su propia discreción.
Ejemplo de ventanas de servidor de respaldo usando rsync
Otro ejemplo de mi práctica. Digamos que tenemos un servidor Windows con cierta información, de la que también queremos hacer una copia de seguridad. No hay problema, se hace de forma bastante sencilla.
Cree una bola de red en el servidor de Windows con la información. Cree un usuario y agréguelo para acceder a esta carpeta. Este usuario lo usaremos para conectar Windows al servidor Linux.
Monte la bola con la información de la que haremos una copia de seguridad:
# mount -t cifs //192.168.0.16/docs / mnt / docs -o user = backup, password = 12345, iocharset = utf8, codepage = cp866
192.168.0.16: la dirección del
backup y 12345: el usuario y la contraseña de la máquina con acceso a la bola de documentos.
Todos, ahora la carpeta / mnt / docs se puede usar como receptor en nuestro script de respaldo con rsync. Si la carpeta está montada directamente en el servidor con copias de seguridad, debe configurarla en el servidor rsyncd usando el ejemplo de los servidores de origen, ejecutar rsyncd en ella y especificar 127.0.0.1 en el script como la dirección IP del servidor. .
En tales casos, creo varios scripts: para montar bolas, hacer copias de seguridad y desmontarlos, combinarlos en uno y ejecutarlos secuencialmente. Como resultado, resulta que conectamos el disco, hacemos una copia de seguridad y lo apagamos.