Página principal » cómo » Cómo usar rsync para respaldar sus datos en Linux

    Cómo usar rsync para respaldar sus datos en Linux

    rsync es un protocolo creado para sistemas similares a Unix que proporciona una versatilidad increíble para realizar copias de seguridad y sincronizar datos. Puede usarse localmente para hacer copias de seguridad de archivos en directorios diferentes o puede configurarse para sincronizarse a través de Internet con otros hosts.

    Se puede usar en sistemas Windows, pero solo está disponible a través de varios puertos (como Cygwin), por lo que en este manual hablaremos de configurarlo en Linux. Primero, necesitamos instalar / actualizar el cliente rsync. En las distribuciones de Red Hat, el comando es "yum install rsync" y en Debian es "sudo apt-get install rsync".


    El comando en Red Hat / CentOS, después de iniciar sesión como root (tenga en cuenta que algunas distribuciones recientes de Red Hat son compatibles con el método sudo).


    El comando en Debian / Ubuntu.

    Usando rsync para copias de seguridad locales

    En la primera parte de este tutorial, realizaremos una copia de seguridad de los archivos de Directory1 a Directory2. Ambos directorios están en el mismo disco duro, pero esto funcionaría exactamente igual si los directorios existieran en dos unidades diferentes. Hay varias formas diferentes de abordar esto, según el tipo de copias de seguridad que desee configurar. Para la mayoría de los propósitos, la siguiente línea de código será suficiente:

    $ rsync -av --delete / Directory1 / / Directory2 /

    El código anterior sincronizará el contenido de Directory1 con Directory2, y no dejará diferencias entre los dos. Si rsync encuentra que Directory2 tiene un archivo que Directory1 no tiene, lo eliminará. Si rsync encuentra un archivo que se ha cambiado, creado o eliminado en Directory1, reflejará esos mismos cambios en Directory2.

    Hay muchos conmutadores diferentes que puede utilizar para que rsync lo personalice según sus necesidades específicas. Esto es lo que el código mencionado le dice a rsync que haga con las copias de seguridad:

    1. -a = recursivo (retroceder en directorios), enlaces (copiar enlaces simbólicos como enlaces simbólicos), permisos (permisos permanentes), tiempos (tiempos de modificación preservados), grupo (grupo preservar), propietario (propietario preservar), preservar archivos de dispositivo, y preservar archivos especiales.
    2. -v = verbosa. La razón por la que creo que verbose es importante es para que pueda ver exactamente lo que rsync está respaldando. Piense en esto: ¿Qué pasa si su unidad de disco duro se deteriora y comienza a eliminar archivos sin su conocimiento? Entonces, ejecuta su secuencia de comandos rsync e inserta esos cambios en sus copias de seguridad, eliminando así todas las instancias de un archivo que no desea obtener. deshacerse de?
    3. -delete = Esto le dice a rsync que elimine cualquier archivo que esté en Directory2 que no esté en Directory1. Si elige usar esta opción, le recomiendo que use las opciones detalladas, por las razones mencionadas anteriormente.

    Usando el script anterior, aquí está la salida generada usando rsync para hacer una copia de seguridad de Directory1 a Directory2. Tenga en cuenta que sin el cambio detallado, no recibirá información tan detallada.

    La captura de pantalla anterior nos dice que File1.txt y File2.jpg se detectaron como nuevos o modificados de las copias existentes en Directory2, por lo que se realizó una copia de seguridad. Noob tip: observe las barras diagonales al final de los directorios en mi comando rsync: son necesarios, asegúrese de recordarlos.

    Revisaremos algunos interruptores más útiles hacia el final de este tutorial, pero solo recuerde que para ver una lista completa puede escribir "man rsync" y ver una lista completa de los interruptores para usar.

    Eso lo cubre todo lo que se refiere a las copias de seguridad locales. Como puede ver, rsync es muy fácil de usar. Se vuelve un poco más complejo cuando se usa para sincronizar datos con un host externo a través de Internet, pero le mostraremos una manera simple, rápida y segura de hacerlo.

    Usando rsync para copias de seguridad externas

    rsync puede configurarse de varias formas diferentes para copias de seguridad externas, pero analizaremos el método más práctico (también el más fácil y más seguro) de tunear rsync a través de SSH. La mayoría de los servidores e incluso muchos clientes ya tienen SSH, y puede usarse para sus copias de seguridad rsync. Le mostraremos el proceso para hacer que una máquina Linux realice copias de seguridad en otra en una red local. El proceso sería exactamente el mismo si un host estuviera en Internet en algún lugar, solo tenga en cuenta que el puerto 22 (o cualquier puerto con el que esté configurado SSH), tendría que ser reenviado en cualquier equipo de red en el lado del servidor..

    En el servidor (la computadora que recibirá las copias de seguridad), asegúrese de que estén instalados SSH y rsync.

    # yum -y instala ssh rsync

    # sudo apt-get install ssh rsync

    Además de instalar SSH y rsync en el servidor, todo lo que debe hacerse es configurar los repositorios en el servidor donde desea hacer una copia de seguridad de los archivos y asegurarse de que SSH está bloqueado. Asegúrese de que el usuario que planea usar tenga una contraseña compleja, y también puede ser una buena idea cambiar el puerto que escucha SSH (el valor predeterminado es 22).

    Ejecutaremos el mismo comando que usamos para usar rsync en una computadora local, pero incluiremos las adiciones necesarias para hacer un túnel de rsync a través de SSH a un servidor en mi red local. Para el usuario "geek" que se conecta a "192.168.235.137" y usa los mismos interruptores anteriores (-av -delete) ejecutaremos lo siguiente:

    $ rsync -av -delete -e ssh / Directory1 / [email protected]: / Directory2 /

    Si tiene SSH escuchando en algún puerto que no sea 22, deberá especificar el número de puerto, como en este ejemplo donde uso el puerto 12345:

    $ rsync -av -delete -e 'ssh -p 12345' / Directory1 / [email protected]: / Directory2 /

    Como puede ver en la captura de pantalla anterior, el resultado dado cuando se realiza una copia de seguridad a través de la red es más o menos igual que cuando se realiza una copia de seguridad local, lo único que cambia es el comando que usa. Tenga en cuenta también que solicitó una contraseña. Esto es para autenticar con SSH. Puede configurar las claves RSA para omitir este proceso, lo que también simplificará la automatización de rsync.

    Automatizar las copias de seguridad rsync

    Cron se puede usar en Linux para automatizar la ejecución de comandos, como rsync. Usando Cron, podemos hacer que nuestro sistema Linux ejecute copias de seguridad nocturnas, o sin embargo, a menudo desea que se ejecuten.

    Para editar el archivo de tabla cron para el usuario con el que ha iniciado sesión, ejecute:

    $ crontab -e

    Deberá estar familiarizado con vi para editar este archivo. Escriba "I" para insertar, y luego comience a editar el archivo de tabla cron.

    Cron usa la siguiente sintaxis: minuto de la hora, hora del día, día del mes, mes del año, día de la semana, comando.

    Puede ser un poco confuso al principio, así que déjame darte un ejemplo. El siguiente comando ejecutará el comando rsync todas las noches a las 10 PM:

    0 22 * ​​* * rsync -av --delete / Directory1 / / Directory2 /

    El primer "0" especifica el minuto de la hora, y "22" especifica las 10 PM. Como queremos que este comando se ejecute a diario, dejaremos el resto de los campos con asteriscos y luego pegaremos el comando rsync.

    Una vez que haya terminado de configurar Cron, presione escape, y luego escriba ": wq" (sin las comillas) y presione enter. Esto guardará tus cambios en vi.

    Cron puede obtener mucho más en profundidad que esto, pero seguir adelante estaría fuera del alcance de este tutorial. La mayoría de las personas solo querrán una simple copia de seguridad semanal o diaria, y lo que hemos demostrado puede lograrlo fácilmente. Para más información sobre Cron, por favor vea las páginas del manual..

    Otras características útiles

    Otra cosa útil que puede hacer es poner sus copias de seguridad en un archivo zip. Deberá especificar dónde desea que se coloque el archivo zip y luego rsync ese directorio a su directorio de copia de seguridad. Por ejemplo:

    $ zip / ZippedFiles/archive.zip / Directory1 / && rsync -av --delete / ZippedFiles / / Directory2 /

    El comando anterior toma los archivos de Directory1, los coloca en /ZippedFiles/archive.zip y luego rsyncs ese directorio a Directory2. Inicialmente, puede pensar que este método resultaría ineficiente para las copias de seguridad grandes, considerando que el archivo zip cambiará cada vez que se realice la más mínima modificación en un archivo. Sin embargo, rsync solo transfiere los datos modificados, por lo tanto, si su archivo zip es de 10 GB y luego agrega un archivo de texto a Directory1, rsync sabrá que es todo lo que agregó (aunque esté en un zip) y transferirá solo los pocos kilobytes. de datos cambiados.

    Hay un par de formas diferentes en que puede cifrar sus copias de seguridad rsync. El método más sencillo es instalar el cifrado en el disco duro (el que está respaldando en sus archivos). Otra forma es cifrar sus archivos antes de enviarlos a un servidor remoto (u otro disco duro, sea cual sea su copia de seguridad). Cubriremos estos métodos en artículos posteriores..

    Independientemente de las opciones y características que elija, rsync demuestra ser una de las herramientas de copia de seguridad más eficientes y versátiles hasta la fecha, e incluso una simple secuencia de comandos rsync puede evitar que pierda sus datos.