Dateien zwischen Servern kopieren: scp, rsync und sftp

Linux 3 Min. Lesezeit

Wenn Sie über SSH auf den Server zugreifen, können Sie darüber auch Dateien kopieren – über eine verschlüsselte Verbindung und ohne separates FTP-Konto. Sie haben die Wahl zwischen drei Tools:

  • scp: einfach, für einmalige Kopiervorgänge;
  • rsync: für große Datenmengen, Datenmigrationen und wiederholte Synchronisierungen, da nur die Änderungen übertragen werden und der Vorgang nach einer Unterbrechung fortgesetzt werden kann;
  • SFTP: für die interaktive Dateiverwaltung sowie für grafische Programme (FileZilla, WinSCP, Cyberduck).

Alle drei Tools verwenden denselben Benutzernamen, dasselbe Passwort oder denselben SSH-Schlüssel wie bei der SSH-Anmeldung (siehe: Wie stelle ich über SSH eine Verbindung zu meinem VPS her?). Unter Linux, macOS und Windows 10/11 (PowerShell) sind die Befehle „scp“ und „sftp“ standardmäßig verfügbar.

scp

# Fájl feltöltése a szerverre
scp mentes.sql janos@203.0.113.10:/home/janos/

# Fájl letöltése a szerverről az aktuális könyvtárba
scp janos@203.0.113.10:/var/log/nginx/error.log .

# Teljes mappa feltöltése
scp -r weboldal/ janos@203.0.113.10:/var/www/

# Nem alapértelmezett SSH port (nagy P betűvel!)
scp -P 2255 mentes.sql janos@203.0.113.10:/home/janos/

rsync

rsync muss auf beiden Rechnern installiert sein (sudo dnf install rsync oder sudo apt install rsync).

rsync -avz --progress weboldal/ janos@203.0.113.10:/var/www/weboldal/
  • -a (Archiv): Kopiert einschließlich aller Unterverzeichnisse und behält die Berechtigungen, den Eigentümer sowie das Änderungsdatum bei,
  • -v: listet die kopierten Dateien auf,
  • -z: komprimiert die Daten während der Übertragung (nützlich bei langsamen Verbindungen, kann bei schnellen Netzwerken weggelassen werden),
  • --progress: Zeigt den Fortschritt an.

Wenn Sie den Befehl erneut ausführen, werden nur die geänderten Dateien kopiert, sodass ein unterbrochener Kopiervorgang problemlos fortgesetzt werden kann.

Achten Sie auf den Schrägstrich

Der Schrägstrich (/) am Ende der Quelle verändert das Ergebnis:

  • rsync -a weboldal/ cel/: Kopiert den Inhalt des Ordners „weboldal“ in den Ordner „cel“;
  • rsync -a weboldal cel/ kopiert den Ordner „weboldal“ selbst, sodass das Ergebnis „cel/weboldal/“ lautet.

Beim Test (AlmaLinux 10.2) waren nach der ersten Variante die Dateien „a.php“, „cache“ und „e.log“ das Ziel, bei der zweiten Variante lediglich ein weboldal-Ordner.

# Próbafuttatás: kiírja, mit csinálna, de nem másol semmit
rsync -avn weboldal/ janos@203.0.113.10:/var/www/weboldal/

# Nem alapértelmezett SSH port
rsync -avz -e "ssh -p 2255" weboldal/ janos@203.0.113.10:/var/www/weboldal/

# Mappák kihagyása
rsync -avz --exclude 'cache/' --exclude '*.log' weboldal/ janos@203.0.113.10:/var/www/weboldal/

# A célon törli azokat a fájlokat, amelyek a forrásban már nincsenek meg
rsync -avz --delete weboldal/ janos@203.0.113.10:/var/www/weboldal/

Testen Sie die Option „--delete“ stets zunächst mit der Option „-n“ (Testlauf): Sollten Sie sich bei der Eingabe der Quelle oder des Ziels vertippen, können die Dateien am Zielort gelöscht werden. Beim Testlauf gibt „rsync“ aus, was gelöscht würde (im Test „deleting regi.txt“), am Ende der Ausgabe steht „(DRY RUN)“, und die Datei ist tatsächlich an ihrem Platz geblieben.

Migration zwischen zwei Servern

Bei einer Servermigration ist es am schnellsten, wenn Sie rsync direkt auf dem neuen Server ausführen und die Daten vom alten Server übertragen, sodass diese nicht über Ihre eigene Internetverbindung geleitet werden:

# Az új szerveren futtatva
rsync -avz --progress janos@regi.szerver.ip:/var/www/ /var/www/

Führen Sie bei längeren Kopiervorgängen den Befehl in tmux oder screen aus, damit die Verbindung nicht unterbrochen wird (siehe: Befehle bei einer unterbrochenen SSH-Verbindung ausführen).

sftp

sftp stellt eine interaktive Verbindung her, über die Sie mithilfe von Befehlen die Dateien auf dem Server durchsuchen können:

sftp janos@203.0.113.10
Befehl Bericht
ls, cd, pwd Verzeichnisauflistung und Verzeichniswechsel auf dem Server
lls, lcd, lpwd Das Gleiche auf Ihrem eigenen Rechner
put fajl Hochladen (Befehl „put -r mappa“ für den gesamten Ordner)
get fajl Herunterladen (Befehl „get -r mappa“ für den gesamten Ordner)
rm, mkdir, rename Löschen, Ordner erstellen, umbenennen
exit Abmelden

Verwenden Sie für die grafische Benutzeroberfläche ein Programm, das SFTP unterstützt (z. B. FileZilla, WinSCP oder Cyberduck): Wählen Sie als Protokoll „SFTP“ aus und geben Sie die Serveradresse, den SSH-Port 22 (oder Ihren eigenen), sowie den Benutzernamen und das Passwort oder den Schlüssel ein.

Übertragung eines großen Ordners in einem Schritt

Die Übertragung vieler kleiner Dateien (beispielsweise einer WordPress-Website) erfolgt schneller, wenn Sie diese während des Vorgangs zu einem einzigen Archiv zusammenfassen:

tar -czf - weboldal/ | ssh janos@203.0.113.10 "tar -xzf - -C /var/www/"

Weitere Informationen zur Verwendung von „tar“: Erstellen und Entpacken von tar.gz-Archiven.

Zurück: Linux-Artikel (62)