Estaciones de trabajo en línea OnWorks Linux y Windows

Logotipo

Alojamiento gratuito en línea para estaciones de trabajo

<Anterior | Contenido | Siguiente>

Sincronizar archivos y directorios

Una estrategia común para mantener una copia de seguridad de un sistema implica mantener uno o más directorios sincronizados con otro directorio (o directorios) ubicados en el sistema local (generalmente un dispositivo de almacenamiento extraíble de algún tipo) o en un sistema remoto. Podríamos, por ejemplo, tener una copia local de un sitio web en desarrollo y sincronizarla de vez en cuando con la copia "en vivo" en un servidor web remoto.

En el mundo similar a Unix, la herramienta preferida para esta tarea es rsync. Este programa puede sincronizar directorios locales y remotos usando el protocolo de actualización remota rsync, Que permite rsync para detectar rápidamente las diferencias entre dos directorios y realizar la cantidad mínima de copia necesaria para sincronizarlos. Esto hace rsync muy rápido y económico de usar, en comparación con otros tipos de programas de copia.

rsync se invoca así:

rsync opciones origen destino

donde fuente y destino son uno de los siguientes:


● Un archivo o directorio local

● Un archivo o directorio remoto en forma de [usuario @] host: ruta

● Un servidor rsync remoto especificado con un URI de rsync: // [usuario @] host [: puerto] / ruta

Tenga en cuenta que el origen o el destino deben ser un archivo local. No se admite la copia de remoto a remoto.

Intentemos rsync en algunos archivos locales. Primero, limpiemos nuestro foo directorio:


[yo @ linuxbox ~] $ rm -rf foo / *

[yo @ linuxbox ~] $ rm -rf foo / *


A continuación, sincronizaremos el Area de juegos directorio con una copia correspondiente en foo:


[yo @ linuxbox ~] $ rsync -av zona de juegos foo

[yo @ linuxbox ~] $ rsync -av zona de juegos foo


Hemos incluido tanto el -a opción (para archivar-causa recursividad y preservación de los atributos del archivo) y el -v opción (salida detallada) para hacer una espejo del Area de juegos directorio dentro foo. Mientras se ejecuta el comando, veremos una lista de los archivos y directorios que se están copiando. Al final, veremos un mensaje resumen como este:



enviado 135759 bytes recibido 57870 bytes 387258.00 bytes / seg el tamaño total es 3230 aceleración es 0.02

enviado 135759 bytes recibido 57870 bytes 387258.00 bytes / seg el tamaño total es 3230 aceleración es 0.02


indicando la cantidad de copias realizadas. Si volvemos a ejecutar el comando, veremos un resultado diferente:



[yo @ linuxbox ~] $ rsync -av playground foo

lista de archivos de construcción ... hecho


enviado 22635 bytes recibido 20 bytes 45310.00 bytes / seg el tamaño total es 3230 aceleración es 0.14

[yo @ linuxbox ~] $ rsync -av playground foo

lista de archivos de construcción ... hecho


enviado 22635 bytes recibido 20 bytes 45310.00 bytes / seg el tamaño total es 3230 aceleración es 0.14


Tenga en cuenta que no había una lista de archivos. Esto es porque rsync detectó que no había diferencias entre ~ / patio de recreo y ~ / foo / patio de recreoy, por lo tanto, no fue necesario copiar nada. Si modificamos un archivo en Area de juegos y correr rsync nuevo:


[yo @ linuxbox ~] $ parque infantil táctil / dir-099 / file-Z [yo @ linuxbox ~] $ rsync -av zona de juegos foo lista de archivos de construcción ... hecho

parque infantil / dir-099 / file-Z

enviado 22685 bytes recibido 42 bytes 45454.00 bytes / seg el tamaño total es 3230 aceleración es 0.14

[yo @ linuxbox ~] $ parque infantil táctil / dir-099 / file-Z [yo @ linuxbox ~] $ rsync -av zona de juegos foo lista de archivos de construcción ... hecho

parque infantil / dir-099 / file-Z

enviado 22685 bytes recibido 42 bytes 45454.00 bytes / seg el tamaño total es 3230 aceleración es 0.14


vemos eso rsync detectó el cambio y copió solo el archivo actualizado.

Como ejemplo práctico, consideremos el disco duro externo imaginario que usamos anteriormente con alquitrán. Si conectamos la unidad a nuestro sistema y, una vez más, se monta en / me- dia / BigDisk, podemos realizar una copia de seguridad útil del sistema creando primero un directorio llamado /apoyo en la unidad externa y luego usando rsync para copiar las cosas más importantes de nuestro sistema al disco externo:



[yo @ linuxbox ~] $ mkdir / media / BigDisk / copia de seguridad

[yo @ linuxbox ~] $ sudo rsync -av --delete / etc / home / usr / local

/ media / BigDisk / copia de seguridad

[yo @ linuxbox ~] $ mkdir / media / BigDisk / copia de seguridad

[yo @ linuxbox ~] $ sudo rsync -av --delete / etc / home / usr / local

/ media / BigDisk / copia de seguridad


En este ejemplo, copiamos el / Etc, / home y / usr / local directorios de nuestro sistema a nuestro dispositivo de almacenamiento imaginario. Incluimos el --Eliminar opción para eliminar archivos que pueden haber existido en el dispositivo de copia de seguridad que ya no existían en el dispositivo fuente (esto es irrelevante la primera vez que hacemos una copia de seguridad, pero será útil en copias posteriores). Repitiendo el procedimiento de conectar la unidad externa y ejecutar este rsync El comando sería una forma útil (aunque no ideal) de mantener una copia de seguridad de un sistema pequeño. Por supuesto, un alias también sería útil aquí. Podríamos crear un alias y agregarlo a nuestro

Archivo .bashrc para proporcionar esta función:


alias backup = 'sudo rsync -av --delete / etc / home / usr / local

/ media / BigDisk / backup '

alias backup = 'sudo rsync -av --delete / etc / home / usr / local

/ media / BigDisk / backup '


Ahora todo lo que tenemos que hacer es conectar nuestro disco externo y ejecutar el copia de seguridad comando para hacer el trabajo.


 

Top OS Cloud Computing en OnWorks: