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. Anschließend verwandele ich mich in einen sudo-User:
sudo su
Wenn ich nun eine Datei von einem anderen Server herunterladen oder auf ihn hochladen 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 einVerzeichnis/
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.
Sei der Erste, der kommentiert!