Python Rsync
In einer Welt der sich ständig ändernden Technologien werden wir immer noch und möglicherweise immer wieder auf Fälle stoßen, in denen wir Dateien übertragen oder austauschen müssen. Rsync
ist ein Linux-basiertes Tool, das uns helfen kann, die Übertragungsdetails festzulegen.
Dieser Artikel befasst sich mit rsync
und wie wir es aus einem Python-Skript verwenden können.
Python Rsync
Wie oben erwähnt, ist rsync
ein leistungsstarkes Tool, das uns hilft, die Übertragungsdetails festzulegen. Das bedeutet, dass wir bestimmen können, welche Dateien von einer Übertragung ausgeschlossen werden sollen und welche Art von Shell verwendet werden soll.
Rsync wird normalerweise für Übertragungen mit hoher Übertragungskomplexität oder für Dateien verwendet, die in großen Mengen übertragen werden. Es ist auch möglich, Backups, die von rsync
erstellt wurden, mit Hilfe von cron
zu automatisieren.
den rsync
-Befehl unter Linux
So sieht ein generisches rsync
-Befehlsformat aus.
rsync [option] [origin] [destination]
Dies ist ein einfacher Befehl, wenn man mit Linux vertraut ist, aber wir werden ihn trotzdem aufschlüsseln. Jeder Befehl beginnt mit dem Schlüsselwort rsync
.
Es folgt eine Option, aus der wir eine große Auswahl haben. Jede Option gibt die Art des rsync
an, das wir auszuführen hoffen.
Der Ursprung und das Ziel sind hier, wohin wir unsere Dateien übertragen möchten (Ziel) und von wo (Ursprung). Das bedeutet, dass wir vorsichtig sein müssen, was wir synchronisieren und ob wir von einem lokalen oder einem entfernten Computer synchronisieren, da rsync
oft die Ursache dafür ist, dass Dateien ohne große Vorwarnung neu geschrieben werden.
Hier ist eine Liste grundlegender und gebräuchlicher Optionen für rsync
.
-a
– Diese Option hilft beim rekursiven Kopieren von Dateien und hilft, den Besitz der Dateien auch nach dem Kopieren beizubehalten.-dry-run
– Mit dieser Option können wir einen Versuch für den Befehl ausführen, um die Änderungen zu beobachten, die sich ergeben würden, wenn der Befehl ausgeführt würde. Diese Option bewirkt keine tatsächlichen Änderungen.-delete
– Diese Option hilft, überflüssige Dateien vom Zielcomputer/-verzeichnis zu löschen.-e
– Diese Option hilft,rsync
über die zu verwendende Shell zu informieren.-exclude="*.filetype"
– Diese Option hilft, alle Dateien eines bestimmten Dateityps von einer Übertragung auszuschließen. Im obigen Befehl ersetzen wirDateityp
durch den tatsächlichen Dateityp. Zum Beispiel-exclude="*.docx"
.-h
– Diese Option hilft, die Hilfe fürrsync
zu starten.-progress
– Diese Option hilft, den Fortschritt der Übertragung anzuzeigen, während der Befehl ausgeführt wird.-q
– Diese Option führt alle Befehle im Hintergrund oder leise aus.-v
– Diese Option führt die Übertragung durch, damit der Benutzer alle ausgeführten Prozesse lesen kann.-z
– Diese Option hilft, synchronisierte Daten zu komprimieren.
Verwenden Sie Rsync aus einem Python-Skript
Es gibt jetzt zwei Möglichkeiten, Rsync in Python zu verwenden.
-
Rufen Sie
subprocess
auf und geben Sie den Befehlrsync
an.import subprocess subprocess.call(["rsync", "[option]", "[origin]", "[destination]"])
-
Verwenden Sie die
pyrsync
-BibliothekDas ist richtig, und Python bietet jetzt seine Bibliothek für Rsync an. Diese Bibliothek ist kein Wrapper für Rsync, sondern enthält eine vollwertige Funktionalität von Rsync selbst.
Wir können diese Bibliothek über
pip
installieren.pip install pyrsync
rsync
erfordert zunächst die Verwendung von MD5-Hash, was Entwickler im Vergleich zur Verwendung von SHA256
, das vom modernisierten pyrsync
verwendet wird, oft als veraltet empfinden. SHA256
erfüllt die Standardanforderungen für die Sicherheit von Verifikationsprozessen.
Während pyrsync
seit seiner Einführung keine größeren Releases hatte, kann beobachtet werden, dass es ein enormes Potenzial in der Welt der Entwicklung hat, und derzeit ist diese Bibliothek nicht bekannt, dass sie irgendwelche Fehler oder Schwachstellen aufweist.
Da die Bibliothek nicht verfügbar ist, muss sie aus verfügbarem Quellcode erstellt und installiert werden.
Pyrsync
hat das Potenzial, uns Stunden und Stunden an Entwicklungszeit und Ressourcen zu sparen, da wir die Funktionalität, die es bietet, nicht von Grund auf neu erstellen müssen.
Sein leicht lesbarer Code und die einfache Installationsanleitung von Pypi
machen es sehr einfach, es in unsere Skripte einzubinden.
Wir müssen diesen Befehl ausführen, wenn auf dem System bereits Setup-Tools installiert sind.
$ sudo python setup.py install
Selbst wenn das System keine Setup-Tools hat, erkennt das Skript setup.py
das Fehlen und stellt die Standardeinstellung so ein, dass stattdessen Pythons eingebaute distutils
verwendet werden.
Ein beispielhafter Befehlsablauf für dieses Modul sieht wie folgt aus:
# In the system with the file that needs patching
>>> import pyrsync2
>>> unpatched = open("unpatched.file", "rb")
>>> hashes = pyrsync2.blockchecksums(unpatched)
# In the remote machine receiving hashes
>>> import pyrsync2
>>> patchedfile = open("patched.file", "rb")
>>> delta = pyrsync2.rsyncdelta(patchedfile, hashes)
# In the origin machine with the unpatched file after receiving delta
>>> unpatched.seek(0)
>>> save_to = open("locally-patched.file", "wb")
>>> pyrsync2.patchstream(unpatched, save_to, delta)
Ein wesentlicher Punkt, der hier zu beachten ist, ist, dass diese Bibliothek derzeit nur Unterstützung für Python 3 bietet.
Wir hoffen, dass Sie diesen Artikel hilfreich finden, um zu verstehen, wie man rsync
in Python verwendet.
My name is Abid Ullah, and I am a software engineer. I love writing articles on programming, and my favorite topics are Python, PHP, JavaScript, and Linux. I tend to provide solutions to people in programming problems through my articles. I believe that I can bring a lot to you with my skills, experience, and qualification in technical writing.
LinkedIn