GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So synchronisieren Sie Dateien und Verzeichnisse mit Zaloha.sh

Zaloha.sh ist ein Verzeichnissynchronisierer, der sich durch seine geringe Größe und Einfachheit auszeichnet. Es ist eigentlich ein BASH-Skript . Es besteht aus nur einer Datei, Zaloha.sh, deren Größe 125 kB beträgt . Etwa die Hälfte dieser Datei ist Dokumentation, die andere Hälfte Programmcode. Zaloha.sh funktioniert sofort. Als Shell-Skript kann es jedoch leicht angepasst werden, um eventuelle nicht standardmäßige Lösungen daraus zu erstellen. Mit Zaloha können wir problemlos Dateien und Verzeichnisse unter Linux, Unix und Microsoft Windows synchronisieren.

Bitte beachten Sie, dass Zaloha.sh nicht so funktionsreich ist wie konkurrierende Backup-Lösungen, aber diese konkurrierenden Lösungen sind auch größer, komplexer und Blackbox-ähnlich. Intern verwendet Zaloha.sh nur Standard-Unix-Befehle wie find, sort, awk, mkdir, rmdir, cp und rm, damit es funktioniert. Zaloha.sh funktioniert gut nativ unter Linux, Unix und Windows (Cygwin ist natürlich erforderlich).

Installieren Sie Zaloha.sh Directory Synchronizer

Die Installation von Zaloha ist trivial. Laden Sie einfach die Datei Zaloha.sh aus dem GitHub-Repository herunter und verschieben Sie sie in Ihren $PATH, zum Beispiel /usr/local/bin/ .

Git klonen Sie das Zaloha-Repository und verschieben Sie die Datei Zaloha.sh mit den folgenden Befehlen in Ihren $PATH:

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

Machen Sie es schließlich ausführbar:

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

Laden Sie unter Windows das Skript in ein geeignetes lokales Verzeichnis herunter. Ich entschied mich für das Verzeichnis C:\TOOLS.

Unter Windows als zusätzlichen Schritt CygWin muss installiert werden. Ich habe CygWin bereits auf meinem Notebook installiert. Wenn Sie CygWin noch nicht installiert haben, lesen Sie bitte die offizielle Installationsanleitung.

Synchronisieren Sie Dateien und Verzeichnisse unter Linux mit Zaloha.sh

Die typische Verwendung von Zaloha.sh ist wie folgt.

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

Lassen Sie mich Ihnen ein einfaches Beispiel zeigen.

Ich werde zwei Verzeichnisse erstellen, nämlich test1 und Test 2 .

$ mkdir test1 test2

Ich habe zwei Textdateien namens file1 und Datei2 im Verzeichnis test1.

$ ls test1/
file1 file2

Und das Verzeichnis test2 ist leer.

Jetzt werde ich die Verzeichnisse test1 und test2 mit Zaloha synchronisieren:

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

Drücken Sie "y" um fortzufahren.

Beispielausgabe:

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

Wie Sie in der obigen Ausgabe sehen können, verwendet Zaloha die Standard-Unix-Befehle - find , awk , sortieren und cp .

Lassen Sie uns überprüfen, ob die Dateien synchronisiert wurden oder nicht.

$ ls test1
file1 file2
$ ls test2
file1 file2

Nun, es funktioniert!!

Synchronisation mit USB-Stick

Die folgenden Schritte wurden auf einem Windows 10-Computer getestet, das Verfahren ist jedoch für alle Betriebssysteme gleich.

Ich habe alle meine Arbeitsdateien auf dem Notebook konzentriert in einer Verzeichnisstruktur unter C:\WORK_DATA . Derzeit enthält es mehrere tausend Dateien verschiedener Typen.

Ich sichere dieses Verzeichnis regelmäßig auf ein (ziemlich altes) 2-GB-USB-Flash-Laufwerk. Wenn ich dieses USB-Flash-Laufwerk an mein Notebook anschließe, wird es als Laufwerk G angezeigt . Das Backup-Verzeichnis auf dem USB-Stick ist G:\WORK_BACKUP .

So, jetzt der eigentliche Test:

Kürzlich war ich bei einem Meeting mit einem Kunden und habe ein Word-Dokument Meeting_Notes_0109.docx erstellt davon. Ich habe auch ein Angebot für diesen Kunden geändert, nämlich die Excel-Tabelle offer_01.xlsx .

Die Erwartung ist also, dass Zaloha.sh die Sicherung dieser beiden Dateien durchführt und die anderen Dateien unberührt lässt.
Lassen Sie uns Zaloha.sh ausführen, um Folgendes zu sehen:

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

Beispielausgabe:

Es ist ersichtlich, dass Zaloha.sh Unix find auf beiden Verzeichnissen C:\WORK_DATA (unter CygWin /c/WORK_DATA) und G:\WORK_BACKUP (unter CygWin /cygdrive/g/WORK_BACKUP) ausführt, dann mehrere Verarbeitungsschritte durchführt und schließlich es zeigt an, was es tun wird, und bittet um Bestätigung.

Die Datei Meeting_Notes_0109.docx ist als NEU (in schwarzer Farbe) und die Datei offer_01.xlsx als UPDATE (in roter Farbe) gekennzeichnet. Die rote Farbe des UPDATE-Tags macht den Benutzer darauf aufmerksam, dass dieser Vorgang mehr Aufmerksamkeit erfordert, da alte Daten im Sicherungsverzeichnis überschrieben werden.

Nach Bestätigung der Eingabeaufforderung mit einem „y“ führt Zaloha.sh die vorgestellten Operationen durch.

Wenn wir jetzt aus Neugier den obigen Befehl erneut ausführen, sehen wir, dass Zaloha.sh die Analyseschritte ausführt und dann nichts tut, da die Verzeichnisse bereits synchronisiert sind.

Umgekehrte Synchronisierung

Lassen Sie uns nun ein weiteres Feature von Zaloha.sh testen, eine "umgekehrte Synchronisation" .

Angenommen, ich musste aus irgendeinem Grund direkt auf dem USB-Flash-Laufwerk arbeiten und möchte, dass meine Arbeit rückwärts mit dem Notebook synchronisiert wird.

Diese Funktion muss explizit durch --revNew aktiviert werden und --revUp Optionen.

Die Option --revNew weist Zaloha.sh an, Dateien im Backup-Verzeichnis (dem USB-Laufwerk) in das Quellverzeichnis (das Notebook) zu kopieren, die nur im Backup-Verzeichnis existieren und neuer sind als die letzte Ausführung von Zaloha.sh.

Die Option --revUp weist Zaloha.sh an, Dateien im Sicherungsverzeichnis (dem USB-Laufwerk), die an beiden Orten vorhanden sind, in das Quellverzeichnis (das Notebook) zu kopieren, und die neueren Dateien befinden sich im Sicherungsverzeichnis.

Testen wir es jetzt. Ich gehe zum USB-Stick (z. B. G:\WORK_BACKUP\IKT\2020) und erstelle ein neues Word-Dokument mit dem Namen Meeting_Notes_0113.docx da drin. Als Nächstes öffne ich Excel für die Datei offer_01.xlsx , etwas bearbeiten und speichern.

Lassen Sie uns nun Zaloha.sh mit der folgenden Befehlszeile ausführen:

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

Es ist ersichtlich, dass Zaloha.sh Meeting_Notes_0113.docx und offer_01.xlsx tatsächlich rückwärts mit dem Notizbuch synchronisiert hat. Auch hier wird das REV.UP-Tag von offer_01.xlsx in roter Farbe angezeigt, um den Benutzer darauf hinzuweisen, dass Daten überschrieben werden.

Weitere Funktionen

Was noch zu beachten ist:Die Erkennung von Dateien, die synchronisiert werden müssen, basiert auf Dateiänderungszeiten und Dateigrößen, was eine übliche Methode ist, die von vielen Synchronisierungstools verwendet wird. Zaloha.sh ist jedoch in der Lage, einen Byte-für-Byte-Vergleich durchzuführen auch. Dies kann durch eine Befehlszeilenoption aktiviert werden.

Auf Dateisystemen, die Hardlinks unterstützen, ist Zaloha.sh in der Lage, Hardlinks zu deduplizieren und die Hardlink-Datei nur einmal in das Sicherungsverzeichnis zu kopieren. Auch dies kann über eine Befehlszeilenoption aktiviert werden.

Zaloha.sh enthält mehrere andere Optionen, um seine Funktion zu ändern. Alle sind in der Dokumentation beschrieben. Die Dokumentation widmet auch der Beschreibung der internen Funktionsweise von Zaloha.sh eine ordentliche Menge Text. Ein wichtiger Punkt, der hier erwähnt werden muss, ist, dass Zaloha.sh ein Arbeitsverzeichnis .Zaloha_metadata erstellt im Backup-Verzeichnis, wo es seine temporären und Metadaten-Dateien aufbewahrt.

Empfohlene Lektüre:

  • So synchronisieren Sie lokale und entfernte Verzeichnisse unter Linux

Schlussfolgerung

Zaloha.sh zum Laufen zu bringen ist in der Tat einfach, besonders unter Linux. Zusammen mit der einfachen Anpassbarkeit als Shell-Skript kann Zaloha.sh in vielen denkbaren Situationen einen Mehrwert liefern. Weitere Einzelheiten finden Sie im unten angegebenen Zaloha GitHub-Repository. Das Repository enthält neben Zaloha.sh selbst einen einfachen Demo-Testfall, einen Screenshot und eine Online-Dokumentation. Die Online-Dokumentation ist die gleiche wie die Dokumentation in Zaloha.sh, aber die Online-Version ist im HTML-Format und schöner.

Hoffe das hilft.


Linux
  1. So verschlüsseln und entschlüsseln Sie Dateien und Verzeichnisse mit Tar und OpenSSL

  2. So synchronisieren Sie Verzeichnisse mit Lsyncd unter Ubuntu 20.04

  3. So archivieren Sie Dateien und Verzeichnisse unter Linux [Teil 2]

  4. So archivieren Sie Dateien und Verzeichnisse unter Linux [Teil 1]

  5. So komprimieren und extrahieren Sie Dateien und Verzeichnisse unter Linux mit gzip und bzip2

So kopieren Sie Dateien und Verzeichnisse unter Linux

So verschieben Sie Dateien und Verzeichnisse in Linux (mv-Befehl)

So verwenden Sie den cp-Befehl zum Kopieren von Dateien und Verzeichnissen

So ordnen und ändern Sie PDF-Dateien mit PDF Arranger

So sichern Sie Dateien und Verzeichnisse mit Rsync unter Linux

So löschen Sie Dateien und Verzeichnisse mit der Linux-Befehlszeile