rsync (Remote Sync) ist ein Dienstprogramm zum Übertragen und Synchronisieren von Dateien zwischen einem Computer und einem Speichermedium sowie zwischen vernetzten Computern durch Vergleich der Änderungszeiten und Größen der Dateien. [ 7 ]
Der rsync-Algorithmus ist eine Art Delta-Codierung und dient der Minimierung der Netzwerkauslastung. Zlib kann zur zusätzlichen Datenkomprimierung verwendet werden . [ 7 ]
Eine Anwendung von rsync ist die Synchronisierung von Software-Repositories auf Spiegelservern , die von Paketverwaltungssystemen genutzt werden . [ 8 ]
Die Entwickler von rsync wurden für den Einsatz von KI-gestützten Codierungswerkzeugen im Entwicklungszyklus kritisiert , was zu Fehlern und einer reduzierten Funktionalität der Software geführt hat.
Geschichte
Andrew Tridgell und Paul Mackerras entwickelten das ursprüngliche rsync, das erstmals am 19. Juni 1996 angekündigt wurde. [ 1 ] Es ähnelt in Funktion und Aufruf dem rdist ( ), das 1983 rdist -cvon Ralph Campbell entwickelt und als Teil von 4.3BSD veröffentlicht wurde . [ 9 ] Tridgell beschreibt Design, Implementierung und Performance von rsync in den Kapiteln 3 bis 5 seiner Dissertation von 1999. [ 10 ] Wayne Davison übernahm 2002 die Hauptbetreuung . Im April 2024 gab Davison bekannt, dass Andrew Tridgell die aktive Entwicklung und Wartung von rsync wieder aufgenommen hatte, nachdem Davison ihn aufgrund begrenzter Zeit um Unterstützung gebeten hatte. Seitdem wird rsync von der RsyncProject-Organisation betreut, wobei Tridgell als Projektbetreuer fungiert. [ 11 ]
Es wurde portiert auf Windows (über Cygwin , Grsync oder SFU [ 12 ] ), FreeBSD , [ 13 ] NetBSD , [ 14 ] OpenBSD , [ 15 ] und macOS .
Beispiele
Eine Befehlszeile zum Spiegeln von FreeBSD könnte wie folgt aussehen: [ 16 ]
$ rsync -avz --delete ftp4.de.FreeBSD.org::FreeBSD/ /pub/FreeBSD/ Der Apache HTTP Server unterstützt rsync nur zum Aktualisieren von Spiegelservern. [ 17 ]
$ rsync -avz --delete --safe-links rsync.apache.org::apache-dist /Pfad/zum/Mirror Die bevorzugte (und einfachste) Methode, eine PuTTY -Website in das aktuelle Verzeichnis zu spiegeln, ist die Verwendung von rsync. [ 18 ]
$ rsync -auH rsync://rsync.chiark.greenend.org.uk/ftp/users/sgtatham/putty-website-mirror/ . Eine Möglichkeit, die Funktionen von Time Machine (macOS) nachzubilden ; [ 19 ]
$ date = $( date "+%FT%H-%M-%S" ) # rsync interpretiert ":" als Trennzeichen zwischen Host und Port (d. h. Host:Port), daher können wir hier weder %T noch %H:%M:%S verwenden, sondern %H-%M-%S. $ rsync -aP --link-dest = $HOME /Backups/current /path/to/important_files $HOME /Backups/back- $date $ ln -nfs $HOME /Backups/back- $date $HOME /Backups/current Erstellen Sie eine vollständige Sicherung des System-Root-Verzeichnisses: [ 20 ]
$ rsync -avAXHS --progress --exclude ={ "/dev/*" , "/proc/*" , "/sys/*" , "/tmp/*" , "/run/*" , "/mnt/*" , "/media/*" , "/lost+found" } / /Pfad/zum/Backup-Ordner Alle Dateien und Verzeichnisse innerhalb eines Verzeichnisses extrem schnell löschen:
$ rsync -a --delete /Pfad/zum/leeren/ Verzeichnis /Pfad/zum/leeren/Verzeichnis # Erstelle ein leeres Verzeichnis irgendwo, das ist der erste Pfad, und der zweite Pfad ist das Verzeichnis, das du leeren möchtest.Algorithmus
Festlegen, welche Dateien gesendet werden sollen
Standardmäßig ermittelt rsync die Dateiunterschiede zwischen Sender- und Empfängersystem, indem es Änderungszeitpunkt und Größe jeder Datei überprüft. Bei Unterschieden in Zeit oder Größe überträgt rsync die Datei vom Sender- zum Empfängersystem. Da hierfür lediglich die Verzeichnisinformationen gelesen werden müssen, ist der Vorgang schnell, allerdings werden ungewöhnliche Änderungen, die weder das Sender- noch das Empfängersystem betreffen, nicht erkannt. [ 7 ]
Feststellen, welche Teile einer Datei sich geändert haben
Der Empfänger teilt seine Kopie der Datei in Teile auf und berechnet für jeden Teil zwei Prüfsummen : den MD5- Hash und eine schwächere, aber einfacher zu berechnende „ rollierende Prüfsumme “. [ 21 ] Er sendet diese Prüfsummen an den Absender.
Der Sender berechnet die Prüfsumme für jeden Abschnitt in seiner Dateiversion, der dieselbe Größe wie die vom Empfänger verwendeten Abschnitte hat. Während der Empfänger die Prüfsumme nur für Abschnitte berechnet, deren Startadresse ein Vielfaches der Abschnittsgröße ist, berechnet der Sender die Prüfsumme für alle Abschnitte, die an einer beliebigen Adresse beginnen. Stimmt eine solche Prüfsumme des Senders mit einer Prüfsumme des Empfängers überein, wird für diesen Abschnitt nicht der Inhalt, sondern nur die Position in der Empfängerdatei übertragen. In diesem Fall verwendet der Sender den rechenintensiveren MD5-Hash, um die Übereinstimmung von Senderabschnitt und Empfängerabschnitt zu überprüfen. Der Abschnitt im Sender muss nicht an derselben Startadresse wie der Abschnitt im Empfänger beginnen. Dies ermöglicht die effiziente Übertragung von Dateien, die sich durch Einfügungen und Löschungen unterscheiden. [ 22 ]
Kritik
Nach dem Update von rsync auf Version 3.4.3 am 20. Mai 2026 berichteten mehrere Nutzer, dass sie keine inkrementellen Dateisicherungen mehr durchführen konnten. Sie stellten fest, dass seit rsync 3.4.1 Dutzende Git-Commits von „tridge and claude“ durchgeführt wurden, wobei Anthropics Claude im Codierungsprozess zum Einsatz kam. Daraufhin erstellte ein Nutzer ein GitHub-Issue mit dem Titel „ Please Do Not Vibe Fuck Up This Software“ , das sich auf anderen Social-Media-Plattformen wie Reddit verbreitete und Debatten über die Akzeptanz von KI-generiertem Code in kritischer Open-Source-Infrastruktur auslöste. [ 23 ]
Als Reaktion darauf veröffentlichte Tridge einen Blogbeitrag mit dem Titel „rsync and outrage“ , in dem er angibt, KI eingesetzt zu haben, um Testreihen und „mehrstufige Sicherheitsmaßnahmen“ in den Code einzubauen. [ 24 ] Tridge behauptete außerdem, dass OpenBSDs openrsync, eine alternative Implementierung von rsync, auf die einige Nutzer umsteigen wollten, die KI-gestützte Testreihe nicht bestehe. Diese Aussage wurde von OSNews- Redakteur Thom Holwerda als „kindisch und unnötig“ kritisiert und als Ausdruck von Unsicherheit bezeichnet. [ 23 ] [ 25 ]
Variationen
DerDas Dienstprogramm rdiff verwendet den rsync-Algorithmus, umDelta-Dateiendie die Unterschiede zwischen Datei A und Datei B enthalten (ähnlich dem Dienstprogrammdiff, jedoch in einem anderen Delta-Format). Die Delta-Datei kann dann auf Datei A angewendet werden, wodurch diese in Datei B umgewandelt wird (ähnlich dempatch). rdiff eignet sich gut fürBinärdateien.
Das Skript rdiff-backup erstellt eine Sicherungskopie einer Datei oder eines Verzeichnisses, entweder lokal oder remote über das Netzwerk auf einem anderen Server. rdiff-backup speichert inkrementelle rdiff-Deltas mit der Sicherung, wodurch jeder Sicherungspunkt wiederhergestellt werden kann. [ 26 ]
Die von rdiff verwendete librsync- Bibliothek ist eine unabhängige Implementierung des rsync-Algorithmus. Sie nutzt weder das rsync-Netzwerkprotokoll noch teilt sie Code mit der rsync-Anwendung. [ 27 ] Sie wird von Dropbox , rdiff-backup, duplicity und anderen Programmen verwendet. [ 27 ]
Die Acrosync- Bibliothek ist eine unabhängige, plattformübergreifende Implementierung des Netzwerkprotokolls rsync. [ 28 ] Im Gegensatz zu librsync ist sie drahtkompatibel mit rsync (Protokollversion 29 oder 30). Sie wird unter der Reciprocal Public License veröffentlicht und von der kommerziellen rsync-Software Acrosync verwendet . [ 29 ]
Die in Python geschriebene Backup-Software Duplicity ermöglicht inkrementelle Backups mit einfachen Speicherdiensten wie dem lokalen Dateisystem, SFTP , Amazon S3 und vielen anderen. Sie nutzt librsync, um Delta-Daten anhand der Signaturen der vorherigen Dateiversionen zu generieren, diese mit GPG zu verschlüsseln und auf dem Backend zu speichern. Aus Performancegründen wird ein lokales Archivverzeichnis verwendet, um die Signaturen der Backup-Kette zwischenzuspeichern. Diese können bei Bedarf vom Backend erneut heruntergeladen werden.
Ab macOS 10.5 gibt es eine spezielle Option -Eoder --extended-attributeseinen Schalter, der es ermöglicht, beim Synchronisieren zwischen zwei Rechnern, die diese Funktion unterstützen, einen Großteil der HFS+ -Dateimetadaten beizubehalten. Dies wird durch die Übertragung des Resource Fork zusammen mit dem Data Fork erreicht. [ 30 ]
Das Dienstprogramm openrsync ist eine unter BSD-Lizenz stehende Neuimplementierung des ursprünglichen rsync, die für OpenBSD entwickelt wurde , aber auch unter Linux und macOS lauffähig ist. [ 31 ] [ 32 ]
zsync ist ein rsync-ähnliches Tool, das für viele Downloads pro Dateiversion optimiert ist. Linux-Distributionen wie Ubuntu [ 33 ] verwenden zsync zur Verteilung schnell wechselnder Beta- ISO-Image- Dateien. zsync nutzt das HTTP-Protokoll und .zsync-Dateien mit vorab berechnetem Rolling Hash, um die Serverlast zu minimieren und gleichzeitig die Übertragung von Differenzen zur Netzwerkoptimierung zu ermöglichen. [ 34 ]
Rclone is an open-source tool inspired by rsync that focuses on cloud and other high latency storage. It supports more than 50 different providers and provides an rsync-like interface for cloud storage.[35] However, Rclone does not support rolling checksums for partial file syncing (binary diffs) because cloud storage providers do not usually offer the feature and Rclone avoids storing additional metadata.[36]
rsync applications
| Program | Operating system | Free software | Description | ||
|---|---|---|---|---|---|
| Linux | macOS | Windows | |||
| Back In Time | Yes | No | No | Yes | |
| BackupAssist | No | No | Yes | No | Direct mirror or with history, VSS. |
| cwRsync | No | No | Yes | No | Based on Cygwin. |
| Grsync | Yes | Yes | Yes[37] | Yes | Graphical Interface for rsync. |
| LuckyBackup | Yes | Yes | Yes | Yes | |
| rclone | Yes | Yes | Yes | Yes | Inspired by rsync and supports more than 50 cloud storage providers and other high latency storage services. Does not actually use rsync or support rolling checksums and partial file synchronization. |
| tym | Yes | Yes | Yes | Yes | Time rsYnc Machine – backup à laTime Machine – Bash script |
| Unison | Yes | Yes | Yes | Yes | |
| rsnapshot | Yes | ? | No | Yes | Incremental backup script using rsync and hard links to keep full snapshots locally or remotely via ssh. Space and bandwidth are preserved because only modifications are transmitted and stored. It provides a compromise between speed, size, ease of restore and redundancy. |
See also
- casync
- Remote Differential Compression
- List of TCP and UDP port numbers
- Grsync – App based on RSync but with graphical user interface
- Comparison of file synchronization software
Notes
References
- ^ abcTridgell, Andrew (19 June 1996). "First release of rsync – rcp replacement". Newsgroup: comp.os.linux.announce. Usenet: cola-liw-835153950-21793-0@liw.clinet.fi. Archived from the original on 8 November 2011. Retrieved 19 July 2007.
- ^"Release 3.4.4". 8 June 2026. Retrieved 8 June 2026.
- ^"News".
- ^"tweaking the license text a bit more".
- ^"rsync's license".
- ^"rsync's license".
- ^ a b c "rsync(1) – Linux man page" . linux.die.net . Archiviert vom Original am 1. Januar 2017 . Abgerufen am 2. Februar 2017 .
- ^ „Nutzung und Betrieb von Spiegelservern“ . GNU-Projekt. Archiviert vom Original am 16. April 2020. Abgerufen am 15. April 2020 .
- ^ "rdist(1)" .
- ^ Tridgell, Andrew; Effiziente Algorithmen zum Sortieren und Synchronisieren , Februar 1999, abgerufen am 29. September 2009
- ^ „Tridge kehrt zu rsync zurück“ . LWN.net . 17. April 2024. Abgerufen am 30. Mai 2026 .
- ^ „Werkzeuglager“ . SUA-Community . Archiviert vom Original am 6. April 2013.
- ^ „FreeBSD Ports“ . Abgerufen am 24. Oktober 2016 .
- ^ „NetBSD Ports“ . Archiviert vom Original am 25. Oktober 2016. Abgerufen am 24. Oktober 2016 .
- ^ „OpenBSD Ports“ . Abgerufen am 24. Oktober 2016 .
- ^ „So spiegeln Sie FreeBSD (mit rsync)“ . Freebsd.org . Abgerufen am 18. August 2014 .
- ^ „Wie man ein Spiegel für die Apache Software Foundation wird“ . Apache.org. Archiviert vom Original am 21. August 2014. Abgerufen am 18. August 2014 .
- ^ „PuTTY-Webseitenspiegelung: Richtlinien für die Spiegelung“ . Chiark.greenend.org.uk. 20. Dezember 2007. Archiviert vom Original am 19. August 2014. Abgerufen am 18. August 2014 .
- ^ „Rsync so eingerichtet, dass es wie Time Machine funktioniert“ . Blog.interlinked.org. Archiviert vom Original am 15. November 2007. Abgerufen am 18. August 2014 .
- ^ „Vollständige Systemsicherung mit rsync“ . wiki.archlinux.org. Archiviert vom Original am 11. Februar 2015. Abgerufen am 15. Dezember 2014 .
- ^ „Neuigkeiten zu rsync 3.0.0“ . 1. März 2008. Archiviert vom Original am 20. März 2008.
- ^ Norman Ramsey. „Der Rsync-Algorithmus“ .
- ^ a b Page, Carly (4. Juni 2026). "„Bitte verhunzen Sie diese Software nicht“: Defekte Backups führen zu Problemen mit der KI-Programmierung in einem rsync-Projekt . The Register . Abgerufen am 9. Juni 2026 .
- ^ Brockmeier, Joe (3. Juni 2026). „Tridgell: rsync und Empörung“ . LWN.net . Abgerufen am 9. Juni 2026 .
- ^ Holwerda, Thom (3. Juni 2026). „Rsync öffnet die Schleusen, Regressionen und Bugs sind die Folge – OSnews“ . www.osnews.com . Archiviert vom Original am 3. Juni 2026. Abgerufen am 9. Juni 2026 .
- ^ rdiff-Backup
- ^ a b Pool, Martin; "librsync" Archiviert am 9. Dezember 2013 in der Wayback Machine
- ^ Chen, Gilbert. „acrosync-library“ . github.com. Archiviert vom Original am 10. Februar 2017. Abgerufen am 22. Juni 2016 .
- ^ "acrosync.com" . Archiviert vom Original am 20. Dezember 2019. Abgerufen am 29. Juli 2020 .
- ^ „Mac Developer Library“ . Developer.apple.com. Archiviert vom Original am 26. September 2012. Abgerufen am 18. August 2014 .
- ^ "openrsync/README.md at 48070e68d73f67d6922b2ffc8c2dee9754e659c6 · kristapsdz/openrsync" .
Es ist derzeit portabel auf Linux (glibc und musl), FreeBSD, NetBSD, Mac OS X und OmniOS.
{{cite web}}: CS1 maint: url-status ( link ) - ^ „Openrsync: Eine Implementierung von rsync vom OpenBSD-Team | Hacker News“ . news.ycombinator.com . Archiviert vom Original am 31. Mai 2026. Abgerufen am 2. Juni 2026 .
- ^ „Zsync CD-Image“ . ubuntu.com . Abgerufen am 6. Januar 2015 .
- ^ zsync-Website
- ^ Craig-Wood, Nick. „Überblick über Cloud-Speichersysteme“ . rclone.org . Archiviert vom Original am 4. Oktober 2017. Abgerufen am 10. Juli 2017 .
- ^ Craig-Wood, Nick. „Rclone Frequently Asked Questions“ . rclone.org . Archiviert vom Original am 10. Mai 2022. Abgerufen am 13. Mai 2022 .
- ^ „Grsync für Windows“ . SourceForge . 12. Juli 2016. Archiviert vom Original am 24. März 2019. Abgerufen am 24. März 2019 .