11.4. Kopieren von Dateien zwischen Linux-Computern

Linux bietet eine breite Palette an Protokollen, mit deren Hilfe Sie Dateien zwischen Computern kopieren können. Welches Protokoll Sie verwenden, hängt davon ab, wie viel Arbeit Sie investieren möchten und ob Sie Kompatibilität mit zukünftigen Windows-Installationen wünschen. Die folgenden Abschnitte behandeln verschiedene Methoden der Dateiübertragung von und zu Linux-Computern. Stellen Sie sicher, dass Sie über eine Netzwerkverbindung verfügen, damit Übertragungen möglich sind. Alle Szenarien setzen eine funktionierende Namensauflösung im Netzwerk voraus. Wenn Ihr Netzwerk keinen Namensdienst umfasst, verwenden Sie IP-Adressen direkt oder fügen Sie die IP-Adressen mit dem jeweils zugehörigen Hostnamen auf allen Clients in /etc/hosts ein.

Die folgenden Beispiel-IP-Adressen und -Hostnamen werden durchgehend in diesem Abschnitt verwendet:

Ziel-Hostname

sun.example.com

Ziel-IP

192.168.0.20

Quell-Hostname

earth.example.com

Quell-IP

192.168.0.1

Benutzer

tux

11.4.1. Kopieren von Dateien mit SSH

Die folgenden Anforderungen müssen sowohl auf dem Server als auch auf dem Client erfüllt sein:

  1. Stellen Sie sicher, dass die Hostnamen zu den IP-Adressen von Server und Client bekannt sind. Jeder Hostname muss für Server und Client in /etc/hosts aufgelistet sein (siehe Abschnitt „ /etc/hosts “ (Kapitel 21, Grundlegendes zu Netzwerken, ↑Referenz).)

  2. Wenn Sie eine Firewall verwenden, öffnen Sie den SSH-Port. Starten Sie YaST und wählen Sie Sicherheit und Benutzer+Firewall. Navigieren Sie zu Erlaubte Dienste und prüfen Sie, ob SSH als Teil der Liste angezeigt wird. Wenn nicht, wählen Sie SSH aus Zu erlaubender Dienst und klicken Sie auf Hinzufügen. Klicken Sie auf Weiter und Übernehmen, um die Änderungen anzuwenden und YaST zu schließen.

Für das Kopieren von Dateien von einem Server zu einem Client müssen Sie wissen, wo sich die Dateien auf dem Server befinden. Um beispielsweise die einzelne Datei /srv/foo_file vom Server in das aktuelle Verzeichnis zu kopieren, verwenden Sie den Befehl scp (und vergessen Sie dabei nicht den Punkt!):

scp tux@sun.example.com:/foo_file .

Um eine vollständige Verzeichnisstruktur zu kopieren, verwenden Sie den rekursiven Modus von scp:

scp -r tux@sun.example.com:/foo_directory .

Wenn Ihr Netzwerk keine Namensauflösung bietet, verwenden Sie direkt die IP-Adresse des Servers:

scp tux@192.168.0.20:/foo_file .

Falls Sie den exakten Speicherort Ihrer Dateien nicht kennen, verwenden Sie den Befehl sftp. Weitere Informationen finden Sie unter Abschnitt 11.4.1.1: Verwenden des sftp-Protokolls oder man sftp.

11.4.1.1. Verwenden des sftp-Protokolls

Das Kopieren von Dateien in KDE oder GNOME mit SFTP ist sehr einfach. Führen Sie dazu die folgenden Schritte aus:

  1. Drücken Sie Alt-F2.

  2. Geben Sie in der Adressleiste Folgendes ein:

    sftp://tux@sun.example.com
  3. Geben Sie das Passwort von tux auf sun.example.com ein.

  4. Ziehen Sie Ihre Serverdateien oder -verzeichnisse auf Ihren Desktop oder in ein lokales Verzeichnis und legen Sie sie dort ab.

KDE bietet zusätzlich das Protokoll fish, das verwendet werden kann, wenn sftp nicht zur Verfügung steht. Die Verwendung dieses Protokolls ist ähnlich wie sftp, Sie müssen nur das Protokollpräfix sftp der URL durch fish ersetzen.

11.4.2. Übertragen von Dateien mit rsync

Bevor Sie Dateien und Verzeichnisse mit rsync zwischen verschiedenen Computern synchronisieren, stellen Sie sicher, dass die folgenden Anforderungen erfüllt sind:

  1. Das Paket rsync ist installiert.

  2. Identische Benutzer sind auf beiden Systemen verfügbar.

  3. Auf dem Server ist genügend Speicherplatz frei.

  4. Wenn Sie das volle Potenzial von rsync nutzen möchten, stellen Sie sicher, dass rsyncd auf einem der Systeme installiert ist.

rsync ist nützlich zum Archivieren oder Kopieren von Daten. Sie brauchen nur eine Remote-Shell (wie ssh) auf dem Zielsystem. rsync kann auch als Dämon benutzt werden, um dem Netzwerk Verzeichnisse zu liefern (siehe Erweitertes Setup für rsync-Synchronisierung).

11.4.2.1. rsync-Basismodus

Die grundlegende Verwendung von rsync erfordert keine besondere Konfiguration. Mit rsync ist es ohne weitere Konfiguration möglich, komplette Verzeichnisse auf ein anderes System zu spiegeln. Die Verwendung unterscheidet sich nur unwesentlich von einem normalen Kopierwerkzeug, wie etwa scp. Mit folgendem Befehl kann ein Backup des Home-Verzeichnisses von tux auf einem Backupserver sun angelegt werden:

rsync -Hbaz -e ssh /home/tux/ tux@sun:backup

Wenden Sie Ihre Backupkopie mit dem folgenden Befehl an:

rsync -Haz -e ssh tux@sun:backup /home/tux/

11.4.2.2. rsync-Dämonmodus

Starten Sie den Dämon rsyncd auf einem Ihrer Systeme, um die volle Funktionalität von rsync zu nutzen. In diesem Modus können Sie Synchronisierungspunkte (Module) erstellen, auf die ein Zugriff ohne Konto möglich ist. Gehen Sie für die Verwendung des Dämons rsyncd wie folgt vor:

Prozedur 11.1. Erweitertes Setup für rsync-Synchronisierung

  1. Melden Sie sich als root an und installieren Sie das Paket rsync.

  2. Konfigurieren Sie Ihre „Synchronisierungspunkte“:

    gid = nobody
    uid = nobody
    read only = true
    use chroot = no
    transfer logging = true
    log format = %h %o %f %l %b
    log file = /var/log/rsyncd.log
    						
    [FTP]
      path = /srv/ftp
      comment = An Example
  3. Starten Sie den Dämon rsyncd als Benutzer root:

    rcrsyncd start

    Rufen Sie für den automatischen Start des rsync-Dienstes beim Systemboot Folgendes auf:

    insserv rsyncd
  4. Listen Sie alle Dateien auf, die sich im Verzeichnis /srv/ftp befinden (und beachten Sie dabei den doppelten Doppelpunkt):

    rsync -avz sun::FTP
  5. Initiieren Sie die Übertragung, indem Sie ein Zielverzeichnis angeben (in diesem Beispiel wird das aktuelle Verzeichnis durch einen Punkt dargestellt):

    rsync -avz sun::FTP .

Standardmäßig werden bei der Synchronisierung mit rsync keine Dateien gelöscht. Um das Löschen von Dateien zu erzwingen, fügen Sie die Option --delete hinzu. Wenn Sie sicherstellen möchten, dass --delete nicht versehentlich neuere Dateien entfernt, verwenden Sie stattdessen die Option --update. Dadurch entstehende Konflikte müssen manuell aufgelöst werden.

11.4.3. Kopieren von Dateien mit FTP

[Warning]Verwenden von Setup nur für Heimnetzwerke

Das in den folgenden Abschnitten beschriebene Setup eignet sich nur für Heimnetzwerke. Verwenden Sie es nicht für Standorte, die überhaupt nicht durch Firewalls geschützt sind, und aktivieren Sie nicht weltweiten Zugriff.

Gehen Sie zur Konfiguration eines FTP-Servers wie folgt vor:

  1. Bereiten Sie den FTP-Server vor:

    1. Installieren Sie das Paket vsftp.

    2. Öffnen Sie eine Shell, melden Sie sich als root an und speichern Sie eine Sicherungskopie von /etc/vsftpd.conf:

      cp /etc/vsftpd.conf /etc/vsftpd.conf.bak
    3. Erstellen eines Zugriffspunkts für anonymes FTP

      mkdir ~ftp/incoming
      chown -R ftp:ftp ~ftp/incoming
  2. Ersetzen Sie die Konfigurationsdateien abhängig von Ihrem bevorzugten Szenario (Erweiterte Konfigurationsoptionen finden Sie auf der Manualpage zu vsftpd.conf.):

    Erlauben von anonymem Lese- und Schreibzugriff
    #
    listen=YES
    									
    # Enable anonymous access to FTP server
    anonymous_enable=YES
    									
    #
    local_enable=YES
    # Enable write access
    write_enable=YES
    anon_upload_enable=YES
    anon_mkdir_write_enable=YES
    dirmessage_enable=YES
    # Write log file 
    xferlog_enable=YES
    connect_from_port_20=YES
    chown_uploads=YES
    chown_username=ftp
    ftpd_banner=Welcome to FTP service.
    anon_root=/srv/ftp
    Gewähren von beschränkten Rechten für FTP-Benutzer (nur Heimnetzwerk)
    chroot_local_users=YES
  3. Starten Sie den FTP-Server:

    rcvsftp start

Geben Sie am Client einfach die URL ftp://HOST in Ihren Browser oder FTP-Client ein. Ersetzen Sie HOST durch den Hostnamen oder die IP-Adresse Ihres Servers. Es sind viele grafische Bedienoberflächen erhältlich, die sich zum Navigieren im Inhalt Ihres FTP-Servers eignen. Um eine Liste zu sehen, geben Sie einfach FTP an der Eingabeaufforderung des YaST-Paket-Managers ein.