GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo sincronizar archivos y directorios usando Zaloha.sh

Zaloha.sh es un sincronizador de directorios que destaca por su pequeño tamaño y sencillez. En realidad es un script BASH . Consta de un único archivo, Zaloha.sh, cuyo tamaño es de 125 kB . Aproximadamente la mitad de ese archivo es documentación, la otra mitad es código de programa. Zaloha.sh funciona de inmediato. Sin embargo, como script de shell, se puede ajustar fácilmente para crear soluciones eventuales no estándar a partir de él. Usando Zaloha, podemos sincronizar fácilmente archivos y directorios en Linux, Unix y Microsoft Windows.

Tenga en cuenta que Zaloha.sh no tiene tantas funciones como las soluciones de respaldo de la competencia, pero esas soluciones de la competencia también son más grandes, más complejas y parecidas a una caja negra. Internamente, Zaloha.sh usa solo comandos estándar de Unix, como find, sort, awk, mkdir, rmdir, cp y rm, para que funcione. Zaloha.sh funciona bien de forma nativa en Linux, Unix y Windows (se requiere Cygwin, por supuesto).

Instalar Sincronizador de directorios Zaloha.sh

Instalar Zaloha es trivial. Simplemente descargue el archivo Zaloha.sh del repositorio de GitHub y muévalo a su $PATH, por ejemplo /usr/local/bin/ .

Git clona el repositorio de Zaloha y mueve el archivo Zaloha.sh a tu $PATH usando los comandos:

$ git clone https://github.com/Fitus/Zaloha.sh.git
$ sudo mv Zaloha.sh/Zaloha.sh /usr/local/bin/zaloha.sh

Finalmente, hazlo ejecutable:

$ sudo chmod +x /usr/local/bin/zaloha.sh

En Windows, descargue el script en un directorio local adecuado. Elegí ponerlo en el directorio C:\TOOLS.

En Windows, como paso adicional, CygWin debe ser instalado. Ya tengo instalado CygWin en mi Notebook. Si aún no ha instalado CygWin, consulte las instrucciones de instalación oficiales.

Sincronizar archivos y directorios en Linux usando Zaloha.sh

El uso típico de Zaloha.sh es el siguiente.

$ zaloha.sh --sourceDir=<path_to_dir> --backupDir=<path_to_dir>

Déjame mostrarte un ejemplo simple.

Voy a crear dos directorios, a saber, test1 y prueba 2 .

$ mkdir test1 test2

Tengo dos archivos de texto llamados file1 y archivo2 en el directorio test1.

$ ls test1/
file1 file2

Y el directorio test2 está vacío.

Ahora, voy a sincronizar los directorios test1 y test2 usando Zaloha:

$ zaloha.sh --sourceDir=test1/ --backupDir=test2/ --color

Presiona "y" para continuar.

Salida de muestra:

ANALYZING ./test1/ AND ./test2/
===========================================
Parsing .............................................. done.
find ./test2/.Zaloha_metadata/ -path ./test2/.Zaloha_metadata/999_mark_executed -printf '///\tL\t%y\t%s\t%Ts\t%F\t%D\t%i\t%n\t%u\t%g\t%m\t%P\t///\t%l\t///\n'
find ./test1/ -path ./test1/.Zaloha_metadata -prune -o -ipath './test1/$RECYCLE.BIN' -prune -o -path './test1/.Trash-[0-9]*' -prune -o -path ./test1/lost+found -prune -o -printf '///\tS\t%y\t%s\t%Ts\t%F\t%D\t%i\t%n\t%u\t%g\t%m\t%P\t///\t%l\t///\n'
find ./test2/ -path ./test2/.Zaloha_metadata -prune -o -ipath './test2/$RECYCLE.BIN' -prune -o -path './test2/.Trash-[0-9]*' -prune -o -path ./test2/lost+found -prune -o -printf '///\tB\t%y\t%s\t%Ts\t%F\t%D\t%i\t%n\t%u\t%g\t%m\t%P\t///\t%l\t///\n'
Cleaning ............................................. done.
Checking ............................................. done.
Sorting (2) .......................................... done.
Differences processing ...............................
Zaloha AWK: Warning: No last run of Zaloha found (this is OK if this is the first run)
done.
Sorting (3) .......................................... done.
Post-processing and splitting off Exec1 and Exec4 .... done.
Sorting (4) and selecting Exec2 ...................... done.
Preparing shellscript for Exec1 ...................... done.
Preparing shellscript for Exec2 ...................... done.
Preparing shellscript for Exec4 ...................... done.
Preparing shellscript to touch file 999 .............. done.
Preparing shellscripts for case of restore ........... done.

TO BE COPIED TO ./test2/
===========================================
NEW file1
NEW file2

Execute above listed copies to ./test2/ ? [Y/y=Yes, other=do nothing and abort]: y

cp --preserve=timestamps ./test1/file1 ./test2/file1
cp --preserve=timestamps ./test1/file2 ./test2/file2

TO BE REMOVED FROM ./test2/
===========================================

Como puede ver en el resultado anterior, Zaloha usa los comandos estándar de Unix - buscar , wow , ordenar y cp .

Comprobemos si los archivos se han sincronizado o no.

$ ls test1
file1 file2
$ ls test2
file1 file2

¡¡Bueno, funciona!!

Sincronización con unidad flash USB

Los siguientes pasos se han probado en una máquina con Windows 10; sin embargo, el procedimiento es el mismo para todos los sistemas operativos.

Tengo todos mis archivos de trabajo en el cuaderno concentrados en una estructura de directorios en C:\WORK_DATA . Actualmente contiene varios miles de archivos de diversos tipos.

Regularmente hago una copia de seguridad de ese directorio en una unidad flash USB (bastante antigua) de 2 GB. Cuando conecto esa unidad flash USB a mi computadora portátil, aparece como unidad G . El directorio de copia de seguridad en la unidad flash USB es G:\WORK_BACKUP .

Entonces, ahora la prueba real:

Recientemente estuve en una reunión con un cliente y creé un documento de Word Meeting_Notes_0109.docx de eso. También modifiqué una oferta para ese cliente, que es la hoja de cálculo de Excel oferta_01.xlsx .

Entonces, la expectativa es que Zaloha.sh realice la copia de seguridad de estos dos archivos, dejando intactos los otros archivos.
Ejecutemos Zaloha.sh para ver:

$ /c/TOOLS/Zaloha.sh --sourceDir="/c/WORK_DATA" --backupDir="/cygdrive/g/WORK_BACKUP" --color

Salida de muestra:

Se puede ver que Zaloha.sh ejecuta Unix find en ambos directorios C:\WORK_DATA (bajo CygWin /c/WORK_DATA) y G:\WORK_BACKUP (bajo CygWin /cygdrive/g/WORK_BACKUP), luego realiza varios pasos de procesamiento y finalmente presenta lo que va a hacer, pidiendo confirmación.

El archivo Meeting_Notes_0109.docx está etiquetado como NUEVO (en color negro), y el archivo offer_01.xlsx está etiquetado como UPDATE (en color rojo). El color rojo de la etiqueta ACTUALIZAR advierte al usuario que esta operación necesita más atención, ya que se sobrescribirán los datos antiguos en el directorio de copia de seguridad.

Después de confirmar el aviso con una "y", Zaloha.sh realiza las operaciones presentadas.

Si ahora, por curiosidad, ejecutamos el comando anterior nuevamente, podemos ver que Zaloha.sh realiza los pasos de análisis y luego no hace nada, ya que los directorios ya están sincronizados.

Sincronización inversa

Probemos ahora otra función de Zaloha.sh, una "sincronización inversa" .

Supongamos que, por alguna razón, tuve que trabajar directamente en la unidad flash USB y quiero que mi trabajo se sincronice inversamente con la computadora portátil.

Esta característica debe estar habilitada explícitamente por --revNew y --revUp opciones.

La opción --revNew indica a Zaloha.sh que copie en el directorio de origen (el cuaderno) los archivos del directorio de copia de seguridad (la unidad USB) que solo existen en el directorio de copia de seguridad y son más recientes que la última ejecución de Zaloha.sh.

La opción --revUp indica a Zaloha.sh que copie en el directorio de origen (el portátil) los archivos del directorio de copia de seguridad (la unidad USB) que existen en ambas ubicaciones y los archivos más nuevos están en el directorio de copia de seguridad.

Ahora vamos a probarlo. Voy a la unidad flash USB (es decir, G:\WORK_BACKUP\IKT\2020) y creo un nuevo documento de Word llamado Meeting_Notes_0113.docx ahí. A continuación, abro Excel en el archivo offer_01.xlsx , edite un poco y guárdelo.

Ahora ejecutemos Zaloha.sh usando la siguiente línea de comando:

$ /c/TOOLS/Zaloha.sh --sourceDir="/c/WORK_DATA" --backupDir="/cygdrive/g/WORK_BACKUP" --color --revNew --revUp

Se puede ver que Zaloha.sh de hecho invirtió la sincronización de Meeting_Notes_0113.docx y offer_01.xlsx en el cuaderno. Nuevamente, la etiqueta REV.UP de offer_01.xlsx se muestra en color rojo, lo que alerta al usuario de que se sobrescribirán los datos.

Más características

Lo que debe tenerse en cuenta más adelante:la detección de archivos que necesitan sincronización se basa en los tiempos de modificación de los archivos y los tamaños de los archivos, que es un método habitual utilizado por muchas herramientas de sincronización. Sin embargo, Zaloha.sh puede realizar comparaciones byte a byte. así como. Esto se puede activar mediante una opción de línea de comando.

En los sistemas de archivos que admiten enlaces duros, Zaloha.sh puede deduplicar los enlaces duros y copiar el archivo enlazado solo una vez en el directorio de respaldo. Una vez más, esto se puede activar mediante una opción de línea de comandos.

Zaloha.sh contiene varias otras opciones para modificar su función. Todos están descritos en la documentación. La documentación también dedica una buena cantidad de texto a la descripción del funcionamiento interno de Zaloha.sh. Un elemento importante a mencionar aquí es que Zaloha.sh crea un directorio de trabajo .Zaloha_metadata en el directorio de copia de seguridad, donde guarda sus archivos temporales y de metadatos.

Lectura sugerida:

  • Cómo sincronizar directorios locales y remotos en Linux

Conclusión

Hacer que Zaloha.sh funcione es realmente fácil, especialmente en Linux. Junto con su fácil ajuste debido a que es un script de shell, Zaloha.sh podría brindar un valor agregado en varias situaciones imaginables. Para obtener más detalles, consulte el repositorio de Zaloha GitHub que se proporciona a continuación. El repositorio contiene, además de Zaloha.sh, un caso de prueba de demostración simple, una captura de pantalla y documentación en línea. La documentación en línea es la misma que la documentación dentro de Zaloha.sh, pero la versión en línea está en formato HTML y es más agradable.

Espero que esto ayude.


Linux
  1. Cómo cifrar y descifrar archivos y directorios utilizando Tar y OpenSSL

  2. Cómo sincronizar directorios usando Lsyncd en Ubuntu 20.04

  3. Cómo archivar archivos y directorios en Linux [Parte 2]

  4. Usando rsync para sincronizar archivos

  5. Cómo comprimir y extraer archivos y directorios en Linux usando gzip y bzip2

Cómo copiar archivos y directorios en Linux

Cómo mover archivos y directorios en Linux (comando mv)

Cómo usar el comando cp para copiar archivos y directorios

Cómo organizar y modificar archivos PDF usando PDF Arranger

Cómo hacer una copia de seguridad de archivos y directorios usando Rsync en Linux

Cómo eliminar archivos y directorios usando la línea de comandos de Linux