GNU/Linux >> Tutoriels Linux >  >> Linux

Comment synchroniser des fichiers et des répertoires à l'aide de Zaloha.sh

Zaloha.sh est un synchroniseur d'annuaire qui se distingue par sa petite taille et sa simplicité. Il s'agit en fait d'un script BASH . Il se compose d'un seul fichier, Zaloha.sh, dont la taille est de 125 Ko . Environ la moitié de ce fichier est de la documentation, l'autre moitié est du code de programme. Zaloha.sh est prêt à l'emploi. Cependant, en tant que script shell, il est facilement ajustable pour créer d'éventuelles solutions non standard. En utilisant Zaloha, nous pouvons facilement synchroniser des fichiers et des répertoires sous Linux, Unix et Microsoft Windows.

Veuillez noter que Zaloha.sh n'est pas aussi riche en fonctionnalités que les solutions de sauvegarde concurrentes, mais ces solutions concurrentes sont également plus grandes, plus complexes et ressemblent à des boîtes noires. En interne, Zaloha.sh utilise uniquement les commandes Unix standard, telles que find, sort, awk, mkdir, rmdir, cp et rm, pour le faire fonctionner. Zaloha.sh fonctionne bien nativement sous Linux, Unix et Windows (Cygwin est requis, bien sûr).

Installer le synchronisateur d'annuaires Zaloha.sh

L'installation de Zaloha est triviale. Téléchargez simplement le fichier Zaloha.sh depuis le référentiel GitHub et déplacez-le vers votre $PATH, par exemple /usr/local/bin/ .

Git clone le référentiel Zaloha et déplace le fichier Zaloha.sh vers votre $PATH à l'aide des commandes :

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

Enfin, rendez-le exécutable :

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

Sous Windows, téléchargez le script dans un répertoire local approprié. J'ai choisi de le mettre dans le répertoire C:\TOOLS.

Sous Windows, comme étape supplémentaire, CygWin doit être installé. J'ai déjà installé CygWin sur mon ordinateur portable. Si vous n'avez pas encore installé CygWin, veuillez consulter les instructions d'installation officielles.

Synchroniser les fichiers et les répertoires sous Linux à l'aide de Zaloha.sh

L'utilisation typique de Zaloha.sh est la suivante.

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

Laissez-moi vous montrer un exemple simple.

Je vais créer deux répertoires à savoir test1 et test 2 .

$ mkdir test1 test2

J'ai deux fichiers texte appelés file1 et fichier2 sur le répertoire test1.

$ ls test1/
file1 file2

Et le répertoire test2 est vide.

Maintenant, je vais synchroniser les répertoires test1 et test2 en utilisant Zaloha :

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

Appuyez sur "y" pour continuer.

Exemple de résultat :

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/
===========================================

Comme vous pouvez le voir dans la sortie ci-dessus, Zaloha utilise les commandes Unix standard - find , maladroit , trier et cp .

Vérifions si les fichiers ont été synchronisés ou non.

$ ls test1
file1 file2
$ ls test2
file1 file2

Eh bien, ça marche !!

Synchronisation avec clé USB

Les étapes suivantes ont été testées sur une machine Windows 10, mais la procédure est la même pour tous les systèmes d'exploitation.

J'ai tous mes fichiers de travail sur le bloc-notes concentrés dans une structure de répertoires sous C:\WORK_DATA . Actuellement, il contient plusieurs milliers de fichiers de types divers.

Je sauvegarde régulièrement ce répertoire sur une (assez ancienne) clé USB de 2 Go. Lorsque je branche ce lecteur flash USB sur mon ordinateur portable, il apparaît en tant que lecteur G . Le répertoire de sauvegarde sur la clé USB est G:\WORK_BACKUP .

Alors, maintenant le vrai test :

Récemment, j'ai participé à une réunion avec un client et j'ai créé un document Word Meeting_Notes_0109.docx à partir de cela. J'ai également modifié une offre à ce client, qui est la feuille de calcul Excel offer_01.xlsx .

On s'attend donc à ce que Zaloha.sh effectue la sauvegarde de ces deux fichiers, en laissant les autres fichiers intacts.
Lançons Zaloha.sh pour voir :

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

Exemple de résultat :

On peut voir que Zaloha.sh exécute Unix find sur les deux répertoires C:\WORK_DATA (sous CygWin /c/WORK_DATA) et G:\WORK_BACKUP (sous CygWin /cygdrive/g/WORK_BACKUP), puis il effectue plusieurs étapes de traitement et enfin il présente ce qu'il va faire, en demandant confirmation.

Le fichier Meeting_Notes_0109.docx est marqué comme NEW (en couleur noire) et le fichier offer_01.xlsx est marqué comme UPDATE (en couleur rouge). La couleur rouge de la balise UPDATE avertit l'utilisateur que cette opération nécessite plus d'attention, car les anciennes données du répertoire de sauvegarde seront écrasées.

Après avoir confirmé l'invite avec un "y", Zaloha.sh effectue les opérations présentées.

Si maintenant, par curiosité, nous exécutons à nouveau la commande ci-dessus, nous pouvons voir que Zaloha.sh effectue les étapes d'analyse, puis ne fait rien, car les répertoires sont déjà synchronisés.

Synchronisation inversée

Testons maintenant une autre fonctionnalité de Zaloha.sh, une "synchronisation inversée" .

Supposons que je devais, pour une raison quelconque, travailler directement sur la clé USB et que je souhaite que mon travail soit synchronisé à l'envers avec l'ordinateur portable.

Cette fonctionnalité doit être explicitement activée par le --revNew et --revUp options.

L'option --revNew indique à Zaloha.sh de copier dans le répertoire source (le bloc-notes) les fichiers du répertoire de sauvegarde (le lecteur USB) qui n'existent que dans le répertoire de sauvegarde et sont plus récents que la dernière exécution de Zaloha.sh.

L'option --revUp indique à Zaloha.sh de copier dans le répertoire source (le bloc-notes) les fichiers du répertoire de sauvegarde (le lecteur USB) qui existent aux deux emplacements et les fichiers les plus récents se trouvent dans le répertoire de sauvegarde.

Testons-le maintenant. Je vais sur le lecteur flash USB (c'est-à-dire G:\WORK_BACKUP\IKT\2020) et crée un nouveau document Word nommé Meeting_Notes_0113.docx là-dedans. Ensuite, j'ouvre Excel sur le fichier offer_01.xlsx , modifiez-le et enregistrez-le.

Exécutons maintenant Zaloha.sh en utilisant la ligne de commande suivante :

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

On peut voir que Zaloha.sh a effectivement inversé Meeting_Notes_0113.docx et offer_01.xlsx vers le bloc-notes. Encore une fois, la balise REV.UP de l'offre_01.xlsx s'affiche en rouge, alertant l'utilisateur que les données vont être écrasées.

Autres fonctionnalités

Ce qu'il convient de noter en outre :la détection des fichiers nécessitant une synchronisation est basée sur les heures de modification et la taille des fichiers, ce qui est une méthode habituelle utilisée par de nombreux outils de synchronisation. Cependant, Zaloha.sh est capable d'effectuer une comparaison octet par octet aussi bien. Cela peut être activé par une option de ligne de commande.

Sur les systèmes de fichiers prenant en charge les liens physiques, Zaloha.sh est capable de dédupliquer les liens physiques et de copier le fichier lié en dur une seule fois dans le répertoire de sauvegarde. Encore une fois, cela peut être activé par une option de ligne de commande.

Zaloha.sh contient plusieurs autres options pour modifier sa fonction. Tous sont décrits dans la documentation. La documentation consacre également une quantité décente de texte à la description du fonctionnement interne de Zaloha.sh. Un élément important à mentionner ici est que Zaloha.sh crée un répertoire de travail .Zaloha_metadata sous le répertoire de sauvegarde, où il conserve ses fichiers temporaires et de métadonnées.

Suggestion de lecture :

  • Comment synchroniser les répertoires locaux et distants sous Linux

Conclusion

Faire fonctionner Zaloha.sh est en effet facile, surtout sous Linux. Avec sa facilité de réglage due au fait qu'il s'agit d'un script shell, Zaloha.sh peut apporter une valeur ajoutée dans plusieurs situations imaginables. Pour plus de détails, reportez-vous au référentiel Zaloha GitHub ci-dessous. Le référentiel contient, outre Zaloha.sh lui-même, un cas de test de démonstration simple, une capture d'écran et une documentation en ligne. La documentation en ligne est la même que la documentation de Zaloha.sh, mais la version en ligne est au format HTML et est plus agréable.

J'espère que cela vous aidera.


Linux
  1. Comment chiffrer et déchiffrer des fichiers et des répertoires à l'aide de Tar et OpenSSL

  2. Comment synchroniser des répertoires à l'aide de Lsyncd sur Ubuntu 20.04

  3. Comment synchroniser les répertoires locaux et distants sous Linux

  4. Comment archiver des fichiers et des répertoires sous Linux [Partie 2]

  5. Comment compresser et extraire des fichiers et des répertoires sous Linux à l'aide de gzip et bzip2

Comment copier des fichiers et des répertoires sous Linux

Comment déplacer des fichiers et des répertoires sous Linux (commande mv)

Comment utiliser la commande cp pour copier des fichiers et des répertoires

Comment organiser et modifier des fichiers PDF à l'aide de PDF Arranger

Comment sauvegarder des fichiers et des répertoires à l'aide de Rsync sous Linux

Comment supprimer des fichiers et des répertoires à l'aide de la ligne de commande Linux