Linux-Äquivalent zu Robocopy?

49386
Ibrahim

Es ist irgendwie komisch, es gibt viele Möglichkeiten, mit denen Linux-Befehlszeilen-Tools den Windows-Tools weit überlegen sind, aber eine Sache, die ich nicht gefunden habe, ist Robocopy . Robocopy ist viel vielseitiger als cp, und ich kann nicht herausfinden, was ich mit Linux-Tools machen kann.

Ein spezieller Anwendungsfall ist, dass ich zwei Verzeichnisse mit meist ähnlichen Dateien habe, aber eines hat neuere Quelldateien und eines hat Inhaltsdateien, die das andere Verzeichnis nicht hat, und möglicherweise neuere Quelldateien (für eine Website). Ich möchte die Dateien aus dem letzteren Verzeichnis in das erstere kopieren, neue Inhaltsdateien hinzufügen, aber nicht neuere Dateien im Zielverzeichnis überschreiben.

Ich habe versucht, unter Linux eine halbe Stunde lang herauszufinden, was ich tun sollte, und entschied, dass ich wahrscheinlich das Bash-Scripting lernen muss oder etwas tun sollte, was ich wollte, und dann wurde mir klar, dass ich einfach Robocopy verwenden konnte. Ich hatte auch andere Anforderungen. Ich habe im Grunde eine Python (Django) Website von einem SVN-Repository in ein Git-Repository konvertiert, und ich wollte sicherstellen, dass ich keine nicht festgeschriebenen Änderungen in SVN vorgenommen habe. Ich wollte jedoch die .svnVerzeichnisse und die .pyckompilierten Python-Dateien bedingt ausschließen . Der folgende Robocopy-Befehl macht genau das, was ich will:

robocopy source destination /XO /E /XD .svn /XF *.pyc 

Gibt es ein Äquivalent zu Robocopy in Linux? Ich habe rsynckurz nachgesehen, aber es schien, als müsste ich einen Rsync-Server einrichten, bevor ich versuche, die Ordner zu synchronisieren.

29
Sie müssen keinen rsync-Server einrichten. Rsync über ssh führt rsync automatisch im Servermodus auf der Remote-Maschine aus (auf eine Art und Weise, die nur für diese Verbindung verwendet wird, unter Ihrem eigenen Konto ausgeführt wird und nach Beendigung automatisch geschlossen wird). . CesarB vor 14 Jahren 1
“… Aber es schien, als müsste ich einen Rsync-Server einrichten, bevor ich versuche, die Ordner zu synchronisieren.” Ich habe Rsync seit Jahren verwendet und musste nie einen formalen Rsync-Server einrichten. Tatsächlich verwenden viele Synchronisations- / Backup-Tools unter macOS Rsync als Kern, ohne einen Server wie Carbon Copy Cloner und - ich glaube - SuperDuper! JakeGould vor 6 Jahren 0

2 Antworten auf die Frage

37
Josh Hunt

Es klingt, als wäre Rsync definitiv das, was Sie suchen. Sie müssen keinen 'Rsync-Server' einrichten, um Dateien von einem Computer auf einen anderen zu kopieren. Rsync unterstützt das Kopieren von Dateien über SFTP (SSH File Transfer), die die meisten Linux-Boxen bereits aktiviert haben (sofern nicht manuell deaktiviert).

Weitere Informationen finden Sie in den Spiegeldateien von Lifehacker für mehrere Systeme mit rsync :

Egal, ob Sie Ihre Daten sichern, Dateien sicher verteilen oder Ihre Arbeitsdokumente über das Internet von Büro zu Hause, zwischen Computern in Ihrem lokalen Netzwerk oder von Ihrem Computer zu Ihrem Webserver spiegeln möchten, rsync kann die Arbeit erledigen. Heute verwenden wir rsync, um Ordner zwischen einem Mac und einem PC über eine sichere Verbindung in der Befehlszeile zu spiegeln.

Rsync ist kostenlos (wie in der Sprache) und plattformübergreifend, dh es werden Dateien zwischen Betriebssystemen (Windows / Cygwin, Mac OS, Linux) synchronisiert. es funktioniert über ssh, also ist es verschlüsselt und sicher; Im Gegensatz zu FTP ist dies inkrementell, so dass nur die Teile der geänderten Dateien übertragen werden, nicht ganze Dateien . Dies macht sie wie Speedy Gonzalez. und die Tatsache, dass es eine Befehlszeile ist, macht es skriptfähig und einfach zu automatisieren.

Lesen Sie die rsync-Manpage. Um ssh (ohne expliziten rsync-Server) zu verwenden, verwenden Sie "-e ssh". Doug Harris vor 14 Jahren 0
rsync ist großartig! Und Sie brauchen -e nicht zu verwenden, da ein Pfad wie user@host.com: / blah / automatisch verwendet wird. The How-To Geek vor 14 Jahren 1
Mmm, das ist cool. Es kann also grundsätzlich eine 'scp'-artige Syntax für die Übertragung über ssh verwendet werden? Ich habe eigentlich versucht, Dateien auf einem Rechner zu übertragen, aber das ist gut zu wissen. Ibrahim vor 14 Jahren 0
Leider ist diese Antwort nicht ganz korrekt: Obwohl SSH verwendet wird, wird SFTP nicht verwendet. Stattdessen kommuniziert sie direkt mit der Remote-Rsync-Instanz unter Verwendung des Rsync-Protokolls. Daniel B vor 7 Jahren 1
14
Sean Staats

rsync kopiert Dateien von einem Verzeichnis in ein anderes Verzeichnis auf demselben Computer wie robocopy. Hier ist der Befehl rsync, der Ihrem Robocopy-Befehl entspricht:

rsync -auv --exclude '.svn' --exclude '*.pyc' source destination 

Dadurch wird die Quelle rekursiv an das Ziel kopiert und ältere Dateien sowie die Verzeichnisse / Dateien '.svn' und '* .pyc' ausgeschlossen.

Allerdings wird dies nur in einem Thread ausgeführt, was in Abhängigkeit von der Anzahl der Dereferenzierungen in Ihrer Speicherlösung zu einer Performance-Verbesserung von 5x führen kann. Mikhail vor 7 Jahren 0
Wenn eine Datei aus der Quelle gelöscht wird, wird sie nicht mit dem Ziel synchronisiert. Jirong Hu vor 6 Jahren 0