CLI File Transfer: FTP, SFTP & lftp (Artikel 281)
Beherrschung der Kommandozeilen-Clients für den Dateitransfer. Erfahren Sie den Umgang mit sftp, die Automatisierung via Batch-Files und die Vorzüge des lftp-Multi-Protokoll-Clients.
# CLI File Transfer: Dateien schieben wie ein Profi
TL;DR / Management Summary Ein normaler Admin nutzt FileZilla. Ein Senior Admin nutzt die Konsole. Während der klassische
ftpClient heute nur noch für Legacy-Systeme relevant ist, istsftpdas tägliche Brot für sicheren Datentransfer über SSH. Für komplexe Aufgaben, wie das Spiegeln von Verzeichnissen über FTP oder das parallele Herunterladen, istlftpdas ungeschlagene Kraftpaket. In diesem Modul lernen wir, wie wir diese Tools in Skripte einbinden und Transfers automatisieren.
# 1. Einführung & Architektur
Die Client-Landschaft.
Alle CLI-Transfertools arbeiten interaktiv (eigene Shell) oder im Batch-Modus.
# Die Werkzeug-Wahl (Mermaid)
graph TD
A[Need to transfer file] --> B{Strategy}
B -->|Secure / Standard| C[sftp]
B -->|Legacy / Old Hardware| D[ftp]
B -->|Complex / High-Speed| E[lftp]
C --> F[Uses SSH Port 22]
D --> G[Uses FTP Port 21 - Unsecure]
E --> H[Multi-Protocol & Segmented Download]
# 2. sftp: Der sichere Standard
Interaktiv und Batch.
Da sftp auf SSH basiert, ist keine zusätzliche Konfiguration nötig.
# Interaktive Nutzung
sftp user@remote-host
# Innerhalb der sftp-Shell:
# ls, cd, get (laden), put (hochladen), exit
# Automatisierung via Batch-File
Ideal für Cronjobs:
# Datei 'commands.txt'
put backup.tar.gz /uploads/
quit
# Ausführung
sftp -b commands.txt user@remote-host
# 3. lftp: Die Allzweckwaffe
Spiegeln und Beschleunigen.
lftp unterstützt FTP, HTTP, SFTP und BitTorrent. Es ist der einzige Client, der “Mirroring” nativ beherrscht.
# Ein Verzeichnis spiegeln (Upload)
lftp -u user,pass -e "mirror -R /local/path /remote/path; quit" ftp.server.com
# Segmentierter Download (Schneller!)
Lädt eine Datei mit 5 parallelen Verbindungen herunter:
lftp -c "pget -n 5 http://server/large_file.iso"
# 4. Day-2 Operations: Automatisierte Skripte
Sicherer Umgang mit Passwörtern.
Nutzen Sie niemals Passwörter in Skripten.
- SFTP: Nutzen Sie SSH-Keys (
ssh-add). - LFTP: Nutzen Sie die
~/.lftprcoder Umgebungsvariablen.
# 5. Troubleshooting & “War Stories”
Wenn der Transfer abbricht.
# Story 1: “Der hängende ASCII-Mode”
Symptom: Ein Admin lädt ein Binär-File (z.B. ein Bild oder ein PDF) via klassischem ftp hoch. Am Ziel ist die Datei korrupt (leicht veränderte Größe).
Ursache: Der Client stand im ASCII Modus statt im BINARY Modus. Er hat Zeilenumbrüche für Windows/Linux “optimiert” und dabei das Binary zerstört.
Lösung: Tippen Sie immer erst bin in der FTP-Shell. SFTP hat dieses Problem nicht, da es immer binär überträgt.
# Story 2: “Das Firewall-Timeout”
Symptom: lftp mirror bricht bei sehr großen Verzeichnissen nach 10 Minuten ab.
Ursache: Die Firewall (oder der Loadbalancer) kappt die Control-Verbindung, da über sie während des langen Datentransfers keine Befehle fließen.
Lösung: Aktivieren Sie Keep-Alives in der ~/.lftprc:
set net:idle 30, set net:timeout 10.
# 6. Fazit & Empfehlung
- Standard: Nutzen Sie
sftpfür alles, was sicher sein muss. - Power-User: Installieren Sie
lftp(apk add lftp/pacman -S lftp). Es ist der beste Client für Massentransfers. - Automatisierung: Bevorzugen Sie für komplexe Sync-Aufgaben
rsync(Artikel 280), falls SSH am Ziel verfügbar ist.
# Anhang: Cheatsheet
| Aufgabe | sftp Befehl | lftp Befehl |
|---|---|---|
| Verbindung | sftp user@host |
lftp -u user,pass host |
| Datei laden | get <file> |
get <file> |
| Datei hochladen | put <file> |
put <file> |
| Ordner laden | get -r <dir> |
mirror <dir> |
| Ordner hochladen | put -r <dir> |
mirror -R <dir> |
| Fortschritt | Standard aktiv | set cmd:show-status yes |
| Resume Download | reget <file> |
get -c <file> |
| Hilfe | help |
help |