Dateien zwischen zwei Websites kopieren mit wget, scp und rsync

Wenn Sie Dateien zwischen zwei Websites kopieren möchten, können Sie das natürlich ganz klassisch machen, indem Sie die Dateien der einen Website per FTP auf Ihren PC herunterladen und dann wieder per FTP in die andere Website hochladen, aber das dauert - je nach Datenmenge - leider ziemlich lange. Im Folgenden zeigen wir Ihnen drei Möglichkeiten, wie Sie Dateien direkt zwischen zwei Websites kopieren können - ohne Umweg über Ihren PC.

Allen drei Methoden gemein ist, daß bei einem wiederholten Ausführen des Kopiervorganges nur noch die Dateien von der Quell-Website kopiert werden, die sich in der Zwischenzeit geändert haben.

 

Methode 1: wget

Um wget nutzen zu können, brauchen Sie nur einen SSH-Account, nämlich für die Ziel-Website. Wie Sie einen SSH-Account in ISPConfig anlegen, erfahren Sie hier: Anlegen eines SSH-Benutzers mit ISPConfig. Für die Quell-Website muß ein FTP-Login vorhanden sein; ein SSH-Account ist nicht erforderlich.

Loggen Sie sich nun per SSH in die Ziel-Website ein. Wechseln Sie in einen Ordner, wo Sie die per wget kopierten Dateien ablegen möchten - wir empfehlen, die Dateien erst einmal im tmp/-Ordner zwischenzuspeichern und dann in den Ziel-Ordner zu kopieren.

Wenn Sie einen Jailkit-SSH-Account haben (wie es z.B. bei unseren Hostingpaketen immer der Fall ist), wechseln Sie in das tmp/-Verzeichnis wie folgt:

cd /tmp/

Wenn Sie einen SSH-Account ohne Chroot-Shell/Jailkit haben (einen solchen SSH-Account können Sie sich z.B. auf unseren Managed Servern und Agenturpaketen erstellen), dann ändert der Pfad sich ein wenig, es wird noch /var/www/<domain> vorangestellt, also z.B.:

cd /var/www/zieldomain.de/tmp/

(Ersetzen Sie zieldomain.de durch Ihre Domain (ohne www!).)

wget rufen Sie nun wie folgt auf:

wget -m --ftp-user='<ftp_benutzername>' --ftp-password='<ftp_passwort>' ftp://<quellwebsite>/<quellordner>

Also z.B.:

wget -m --ftp-user='musterftp1' --ftp-password='34@MhRbMv' ftp://quelldomain.de/web

<quellordner> ist relativ zum Wurzelverzeichnis des FTP-Benutzers. Wenn Sie <quellordner> weglassen, wird alles, was sich im FTP-Account befindet, kopiert; bei Angabe von <quellordner> nur das, was sich in diesem Ordner befindet (inkl. der Unterverzeichnisse).

Nach dem Kopiervorgang finden Sie - nach dem obigen Beispiel - folgende Ordnerstruktur im tmp/-Verzeichnis: quelldomain.de/web. Um den Inhalt von quelldomain.de/web in das web/-Verzeichnis der Ziel-Website zu kopieren, gehen Sie wie folgt vor:

cd quelldomain.de/web

Wenn Sie die Dateien kopieren möchten:

cp -pfr * ../../../web

Wenn Sie die Daten verschieben möchten

mv * ../../../web

Dateien, die mit . beginnen (also z.B. .htaccess) und in dem Ordner liegen, indem Sie sich gerade befinden, müssen bei cp und mv explizit mit angegeben werden:

mv * .htaccess ../../../web

Bitte beachten Sie, daß FTP-Server immer nur eine bestimmte Anzahl an Dateien pro Verzeichnis anzeigen/ausliefern; standardmäßig ist dieser Wert 10.000, bei unseren Servern ist er auf 100.000 eingestellt. Das bedeutet, wenn Sie ein Verzeichnis in der Quell-Website haben, das mehr als diese 10.000/100.000 Dateien hat, dann werden alle Dateien, die darüber hinausgehen, nicht mitkopiert. Bei großen Shopware-Installationen kann es durchaus vorkommen, daß es Ordner mit mehr Dateien gibt (z.B. media/image und media/image/thumbnails), daher gilt es, dies vorher abzuklären.

 

Methode 2: scp

Für scp (secure copy) benötigen Sie sowohl für die Quell- als auch für die Ziel-Website jeweils einen SSH-Account.

Loggen Sie sich in die Ziel-Website mit Ihrem SSH-Account ein.

scp wird wie folgt aufgerufen:

scp -r <ssh_benutzername>@<quellwebsite>:<quellordner>/* <zielordner>

Also z.B.:

scp -r musterssh2@quelldomain.de:/web/* /web

Der obige Befehl paßt für einen Jailkit-SSH-Account; wenn Sie einen SSH-Account ohne Chroot-Shell/Jailkit haben, dann ändert der Pfad sich ein wenig, es wird noch /var/www/<domain> vorangestellt, also z.B.:

scp -r musterssh2@quelldomain.de:/var/www/quelldomain.de/web/* /var/www/zieldomain.de/web

Bei scp gibt es im Gegensatz zu wget keine Beschränkung der Dateianzahl pro Verzeichnis.

 

Methode 3: rsync

Für rsync benötigen Sie sowohl für die Quell- als auch für die Ziel-Website jeweils einen SSH-Account.

Loggen Sie sich in die Ziel-Website mit Ihrem SSH-Account ein.

rsync wird wie folgt aufgerufen:

rsync -avz -e ssh <ssh_benutzername>@<quellwebsite>:<quellordner>/ <zielordner>/

Also z.B.:

rsync -avz -e ssh musterssh2@quelldomain.de:/web/ /web/

Bitte achten Sie genauestens darauf, wie in diesem Beispiel Slashes (/) am Ende der Pfade zu setzen; wenn Sie Slashes vergessen, erzielen Sie ein ganz anderes Ergebnis!

Der obige Befehl paßt für einen Jailkit-SSH-Account; wenn Sie einen SSH-Account ohne Chroot-Shell/Jailkit haben, dann ändert der Pfad sich ein wenig, es wird noch /var/www/<domain> vorangestellt, also z.B.:

rsync -avz -e ssh musterssh2@quelldomain.de:/var/www/quelldomain.de/web/ /var/www/zieldomain.de/web/

Bei rsync gibt es ebenfalls wie bei scp keine Beschränkung der Dateianzahl pro Verzeichnis.

Nach oben