Ich habe zwei verschiedene Server unter Ubuntu am Start, und manchmal ist es praktisch, Dateien von einem Server schnell auf den anderen zu übertragen. Dazu benutze ich sftp.
Ich habe mich auf einem meiner Server per ssh eingewählt. Wenn ich nun eine Datei von einem anderen Server herunterladen will, verbinde ich mich mit dem anderen Server:

sftp user@entfernter-server.de

Nach der Passworteingabe erkennt man am vorangestellten

sftp>

dass die Verbindung erfolgreich war.

Auch die Strato-Hidrive lässt sich per sftp ansprechen:

sftp HIDRIVE-USERNAME@sftp.hidrive.strato.com

Mit

help

oder

?

lassen sich die zur Verfügung stehenden Befehle anzeigen. „Remote“ bezieht sich immer auf den „entfernten“ Server, also den, auf den ich mich gerade mit sftp eingewählt habe. „Local“ ist der Server, auf dem ich mich „eigentlich“ befinde.

Zuerst will ich herausfinden, in welchem Verzeichnis ich mich gerade auf dem Remote-Server befinde. Wie in einer normalen Shell-Sitzung gebe ich Folgendes ein, um mir das aktuelle Verzeichnis anzeigen zu lassen:

pwd

Wir können den Inhalt des aktuellen Verzeichnisses des Remote-Servers mit einem anderen bekannten Befehl anzeigen lassen:

ls

Die Befehle innerhalb der SFTP-Schnittstelle sind nicht die normalen Shell-Befehle und nicht so funktionsreich. Aber mit

ls -la

können wir uns den Verzeichnisinhalt des Remote-Servers differenzierter anzeigen lassen.

Für die Anzeige des lokalen Servers setzen wir ein „l“ vor die Befehle:

lls

Oder auch

lls -la
lpwd

Um in ein anderes Verzeichnis zu gelangen, führen wir diesen Befehl aus:

cd Verzeichnisname

Remote-Dateien auf das lokale System übertragen

Wenn wir Dateien von unserem Remote-Host herunterladen möchten, geht dies mit

get remote.datei

Der Befehl “get” lädt eine Datei, die sich auf dem Remote-System befindet, auf das lokale System herunter.
Wir können die Remote-Datei während des Herunterladens umbenennen:

get remote.datei lokale.datei

Ein Verzeichnis mit all seinen Inhalten lädt man herunter mit:

get -r einVerzeichnis

Um Berechtigungen und Zugriffszeiten beizubehalten fügen wir noch “-P” oder “-p” hinzu:

get -Pr einVerzeichnis

Lokale Dateien auf das Remote-System übertragen

Das Übertragen von lokalen Dateien auf das Remote-System ist ebenso einfach. Der entsprechende Befehl lautet “put”:

put lokale.datei

Die Flags -r und -Pr gelten auch für “put”. Um ein gesamtes lokales Verzeichnis zu kopieren, können wir also ausgeben:

put -r lokale.datei

Der Befehl “df” funktioniert hier auch. Damit können wir überprüfen, ob wir genügend Speicherplatz haben, um den Transfers durchzuführen:

df -h

Leider gibt es keine lokale Variante dieses Befehls, aber wir können das umgehen, indem wir den Befehl „!“ verwenden.
Der Befehl “!” führt uns auf die lokale Shell, wo wir jeden auf unserem lokalen System verfügbaren Befehl ausführen können. So können wir die Festplattennutzung durch Eingabe überprüfen:

!
df -h

Um zu unserer sftp-Sitzung zurückzukehren, geben wir ein:

exit

Nun sollten wir wieder die sftp-Eingabeaufforderung sehen.

Hier eine Übersicht über die wichtigsten sftp-Befehle:

 

 

sftp

Beschreibung

help|? alle Kommandos anzeigen
genauere Erklärung zum Kommando
cd Pfad in remote Verzeichnis wechseln
lcd Pfad in lokales Verzeichnis wechseln
pwd aktuellen remote Verzeichnispfad ausgeben
lpwd aktuellen lokalen Verzeichnispfad ausgeben
ls -l (entspricht ls -la) remote Verzeichnisinhalt ausführlich ausgeben
lls lokalen Verzeichnisinhalt ausgeben
mkdir Verzeichnis remote Verzeichnis erstellen
lmkdir Verzeichnis lokales Verzeicnis erstellen
rm Datei remote Datei löschen
rmdir Verzeichnis remote Verzeichnis löschen
rename alter-Dateiname neuer-Dateiname remote Datei verschieben|umbenennen
put lokaler-Dateiname [remote-Dateiname] Datei hochladen
unterbrochenen Dateiupload fortsetzen
get remote-Dateiname [lokaler-Dateiname] “Datei” runterladen
unterbrochenen Dateidownload fortsetzen
!Kommando Kommando in lokaler Shell ausführen
! in lokale Shell wechseln / lokale Shell verlassen
exit|bye|quit SFTP Session beenden

Hinweis: ‘Datei Namen’ mit Leerzeichen müssen mit ‘ ‘ eingeschlossen werden.