Rsync über ssh oder etwas anderes?

10

Ich habe versucht, rsync unter OSX zu Linux oder Unix zu verwenden, über die ich nicht viel Kontrolle habe. Ich habe so etwas gemacht

rsync -avz -e ssh remoteuser@remotehost:/remote/dir /this/dir/ 

Der zurückgegebene Fehler ist:

bash: rsync: Befehl nicht gefunden rsync: Verbindung unerwartet geschlossen (0 Bytes bisher empfangen) [Empfänger] rsync-Fehler: Remote-Befehl nicht gefunden (Code 127) unter /SourceCache/rsync/rsync-37.3/rsync/io.c(452 ) [Empfänger = 2.6.9]

Nachdem ich die Dokumente gelesen habe, denke ich jedoch, dass ich tatsächlich einen rsync-Daemon auf dem Remote-Host installieren müsste.

  1. Muss ich einen rsync-Server auf dem Remote-Host installieren?
  2. Kostenlose Alternativen - GUI oder Nicht-GUI - für die keine Installation auf dem Remote-Host erforderlich ist ?

Vielen Dank!

Dan Rosenstark
quelle
1
Was sind die genauen Probleme, die Sie mit Ihrem aktuellen Befehl haben?
Fideli
@ Fideli, sorry, habe das vergessen. Frage jetzt
bearbeiten
1
Vielen Dank für diese Frage, aber können Sie sie rsyncbitte markieren ?
Andrew Grimm

Antworten:

21

Sie benötigen einen rsync-Befehl auf dem Server, müssen jedoch keinen Daemon ausführen.

Holen Sie sich eine rsync-Binärdatei, die auf dem Server funktioniert, platzieren Sie sie irgendwo in Ihrem Haus und fügen Sie dieses Flag Ihrer Befehlszeile hinzu : --rsync-path=/home/user/path/to/rsync.

Wenn Sie rsync nicht auf die Server kopieren möchten, können Sie scp oder sshfs verwenden.

sshfs user@host ~/sync/user-host
rsync -av ~/local-dir ~/sync/user-host/remote-dir

In diesem Fall wird rsync vollständig lokal ausgeführt, die Änderungen werden jedoch an den Server weitergegeben.

Tobu
quelle
Ich mag diese Lösung sehr, besonders weil der Server ein billiger Hosting-Plan für GoDaddy ist und ich bezweifle, dass ich rsync auf dem Server ausführen kann. +1 für jetzt!
Dan Rosenstark
Was ist der einfachste Weg für die Installation von sshfs unter OSX? MacFuse oder gibt es etwas einfacheres?
Dan Rosenstark
MacFuse + (MacFusion oder sshfs-static-leopard), denke ich (ich bin kein OSX-Benutzer)
Tobu
Ja, MacFuse macht das. Nur dass die Download-Seite für die sshfs-Binärdatei die Binärdatei mit der Erweiterung .gz enthält. Sie müssen es also umbenennen, anstatt es zu schießen. Ärgerlich aber jetzt okay! Vielen Dank
Dan Rosenstark
6

Sie müssen rsync auf dem Remote-Host haben - nicht unbedingt einen rsync-Server (der meiner Meinung nach die SSL-Verbindung ohnehin nicht handhabt), aber rsync auf der lokalen Box muss mit einem rsync auf der Remote-Box kommunizieren. Sie verwenden ssh, um die beiden zu verbinden.

Angenommen, rsync ist auf der Remote-Box vorhanden, befindet es sich nicht im Standardsuchpfad für Ihre angemeldete ssh-Shell. Abhängig von Ihren Einstellungen und Berechtigungen auf der Remote-Box können Sie es versuchen

  • Verwenden Sie die Option --rsync-path =
  • Ändern des Standardpfads für Ihre Remote-SSH-Shell
  • Hinzufügen eines Alias ​​für rsync in der Remote-SSH-Shell
  • Ändern des ausgeführten Remote-Befehls in den absoluten Pfad zu rsync

oder etwas ähnliches. Wenn rsync als ausführbare Datei (Vice Server) auf dem Remote-Host nicht vorhanden ist, muss es hinzugefügt werden.

mpez0
quelle
Das war hilfreich, also +1, aber ich frage mich, wie ich das Startverzeichnis für rsync auf der Windows-Seite angeben soll, wenn ich es wie folgt
Ryan
1

Trotz der oben vorgeschlagenen kreativen sshfs-Lösung macht es nicht viel Sinn, rsync zu verwenden, ohne einen rsync-Daemon auf dem Remote-Host auszuführen. Die ganze Idee der Effizienz in rsync besteht darin, dass die beiden Instanzen ihre lokalen Kopien des Datasets vergleichen, indem sie Prüfsummen lokal berechnen, sie über das Netzwerk vergleichen und nur die tatsächlichen Daten für die Teile dieser Dateien übertragen, die sich tatsächlich unterscheiden.

Wenn Sie sshfs oder einen Netzwerk-Mount verwenden, wird nur die Tatsache ausgeblendet, dass der gesamte Datensatz vom Remote-Host über das Netzwerk kopiert werden muss, um die Prüfsummen lokal zu berechnen und die Unterschiede darüber hinaus zu übertragen. Es wäre schneller und billiger, alles lokal zu löschen und das Los zu "scp -r".

enorm
quelle
3
Nicht genau, denn rsync prüft, ob Dateien nach Größe und Zeitstempel geändert werden, und das ist immer noch viel effizienter als das Scping aller Dateien. In der Tat ist der inkrementelle rsync-Aktualisierungsmechanismus in Dateien gegenüber sshfs nicht sinnvoll.
Jaap Eldering
0

Versuchen Sie SCP . Da Sie bereits SSH-Zugriff haben, müssen Sie nichts anderes auf dem Remote-Host installieren :)

So kopieren Sie Dateien vom Remote-Host auf den lokalen Host:

# scp -R remoteuser@remotehost:/remote/dir /this/dir/ 

Oder kopieren Sie Dateien vom lokalen Host auf den Remote-Host mit:

# scp -R /this/dir remoteuser@remotehost:/remote/dir 
Lyarwood
quelle
1
Danke Lee, SCP ist großartig, aber es wird nicht "synchronisiert", oder?
Dan Rosenstark
1
es muss ein kleines "r" sein:scp -r
0x4a6f4672