In einer Linux-Umgebung ist ssh sowohl für die Sicherheit als auch für die Benutzerfreundlichkeit der beste Weg. SSH, SSHFS, SCP und SFTP, wie Sie sie auflisten, sind alles nur verschiedene Dienste, die auf dem SSH-Protokoll aufbauen. SCP ist sehr einfach zu verwenden, es funktioniert genau wie CP, aber Sie können Benutzer- und Computernamen im Pfad angeben. Wir könnten also einen CP wie cp ~/music/ ~/newmusic/
machen , aber wir könnten genauso gut scp ~/music/ [email protected]:~/newmusic
machen um es an den Computer mit dem Namen host zu senden. Das war's – wir müssen nichts einrichten. Sie werden zur Eingabe des Kontokennworts auf dem anderen Computer aufgefordert, wenn Sie kein Zertifikat oder eine andere Authentifizierung eingerichtet haben (scp teilt diese Einstellungen natürlich mit ssh).
SFTP ist ein Tool, das es einfach macht, viele Operationen auf einem Remote-Dateisystem durchzuführen – es funktioniert genau wie FTP, läuft aber über SSH, ist also sicher und erfordert nur einen SSH-Server. man sftp
wird Ihnen alles über die Verwendung erklären. Ich verwende SFTP nicht nur, um einen Ordner zwischen zwei Computern zu verschieben, es ist nützlicher, wenn Sie viele Vorgänge ausführen müssen, z. B. wenn Sie Dateien auf einem anderen Computer neu anordnen.
SSHFS erweitert SFTP einfach in ein Dateisystem:Es ermöglicht Ihnen, einen virtuellen Host in Ihr Dateisystem einzuhängen, sodass die Netzwerksachen völlig transparent ablaufen. SSHFS ist für semi-permanente Setups gedacht, nicht nur für eine einmalige Dateiübertragung. Die Einrichtung erfordert etwas mehr Aufwand, was Sie auf der Projektwebsite nachlesen können.
Wenn Sie in einer Umgebung mit gemischten Betriebssystemen arbeiten müssen, ist Samba die nächstbeste Wahl. Windows und OS X unterstützen Samba vollständig automatisch, und Linux tut es auch, obwohl es manchmal schwierig zu bedienen ist.
Mein persönlicher Favorit für Fälle, in denen Sicherheit keine Rolle spielt, ist netcat + tar:
Um ein Verzeichnis zu senden, cd in das Verzeichnis, dessen Inhalt Sie senden möchten, auf dem Computer, der das Senden ausführt, und tun Sie:
tar -cz . | nc -q 10 -l -p 45454
Cd auf dem Computer, der die Inhalte empfängt, an die Stelle, an der die Inhalte erscheinen sollen, und führe Folgendes aus:
nc -w 10 $REMOTE_HOST 45454 | tar -xz
Ersetzen Sie $REMOTE_HOST
mit IP / Hostname des sendenden Computers. Sie können statt 45454
auch einen anderen Port verwenden .
Was hier tatsächlich passiert, ist, dass der "empfangende" Computer eine Verbindung zum sendenden Computer auf Port 45454 herstellt und den tar- und gzip-Inhalt des Verzeichnisses empfängt und diesen direkt an tar (und gzip) weitergibt, um ihn darin zu extrahieren das aktuelle Verzeichnis.
Kurzes Beispiel (unter Verwendung von localhost als Remote-Host)
Computer 1
[email protected]:~/nctest/a/mydir$ ls
file_a.txt file_b.log
[email protected]:~/nctest/a/mydir$ tar -cz . | nc -q 10 -l -p 45454
Computer 2
[email protected]:~/nctest/b$ ls
[email protected]:~/nctest/b$ nc -w 10 localhost 45454 | tar -xz
[email protected]:~/nctest/b$ ls
file_a.txt file_b.log
Für einmalige Bewegungen wird scp empfohlen.
Aber wenn Sie feststellen, dass dieses Verzeichnis funktioniert und Sie es viele Male verschieben müssen, um die andere Position auf dem neuesten Stand zu halten, können Sie rsync (mit ssh) verwenden.
Da rsync viele Argumente hat, stecke ich es normalerweise in eine kleine Shell, damit ich es (jedes Mal) richtig mache. Die Idee ist, nur Dinge zu senden, die sich seit der letzten Ausführung geändert haben.
#!/bin/bash
user="nisse"
host="192.168.0.33"
echo "Sync: /home/media/music/"
rsync --archive --delete -v --progress -e "ssh -l $user " /home/media/music/ $host:/home/media/music/
Dadurch wird ein Verzeichnis mit dem Namen "/home/media/music/" vom lokalen Computer auf den PC mit dem Namen 192.168.0.33 verschoben, wobei der Benutzer "nisse" verwendet wird. Und löschen Sie alles auf dem Ziel, das auf dem lokalen PC nicht vorhanden ist.