linux-cli-shell cli file-transfer ftp sftp lftp automation

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 ftp Client heute nur noch für Legacy-Systeme relevant ist, ist sftp das tägliche Brot für sicheren Datentransfer über SSH. Für komplexe Aufgaben, wie das Spiegeln von Verzeichnissen über FTP oder das parallele Herunterladen, ist lftp das 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 ~/.lftprc oder 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 sftp fü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