Rsync über SSH-Ordnertiefenbeschränkung?

Rsync über SSH-Ordnertiefenbeschränkung?

ich arbeite an einer Servermigration und stoße auf folgendes Problem:

Ich führe rsync aus, um alle Daten zu migrieren, aber aus irgendeinem Grund gibt es eine Ordnertiefenbeschränkung ... Dies erfolgt über den Befehl rsync over ssh:

rsync -raz --verbose --update --delete --exclude-from 'rsync-exclude.txt' /home 192.168.70.50:/

70.50 ist der neue Server, und ich führe den Befehl auf dem alten Server aus. Die Ordnerstrukturen sind extrem tief, bis zu 20 Ordner tief.

Die meisten Dateien und Ordner werden also kopiert, aber alle ab einer Ordnertiefe von 10 nicht. Wenn ich tiefere Ordner angebe

rsync -raz --verbose --update --delete --exclude-from 'rsync-exclude.txt'/home/user/blablabla/domain/web to 192.168.70.50:/home/user/blablabla/domain

es beginnt, die verbleibenden Ordner rekursiv zu kopieren ...

Hat jemand eine Lösung dafür?

Antwort1

rsync hat keine Begrenzung hinsichtlich der Tiefe der Unterverzeichnisse, die es durchläuft. Genauer gesagt überschreitet es die Begrenzung des Linux-Dateisystems. Ich habe gerade etwas kopiert, das etwa 500 Ebenen tief war, und rsync hat es problemlos kopiert.

Wenn dieses Problem bei Ihnen auftritt, überprüfen Sie Folgendes:

  • ist das Zieldateisystem nicht in der Lage, so viele Unterverzeichnisse zu verarbeiten?
  • ist das Ziel ausgebucht?
  • gibt die Datei --exclude-from etwas an, das Dateien einschränkt?
  • Überschreitet die Gesamtlänge des Pfads („d/d/d/d“ sind 4 Ebenen, aber 7 Zeichen) das, was das Dateisystem zulässt?
  • funktioniert es, wenn ich die inkrementelle Rekursion ausschalte? --no-inc-recursive(Dies ist ein neuerer Algorithmus und Sie haben möglicherweise einen Fehler entdeckt.)
  • funktioniert das Kopieren mit einer anderen Technik?
  • verschwindet das Problem mit (oder ohne) Komprimierung?-z

Hier ist eine weitere Technik, die Sie ausprobieren können. Wenn sie funktioniert, aber rsyncnicht, dann haben Sie möglicherweise einen Fehler gefunden in rsync:

Dadurch werden tardie Dateien auf der einen Seite gespeichert, die TAR-Datei an stdout gesendet, per SSH auf die andere Seite übertragen und die Dateien dort entpackt.

SOURCEDIR=/path/to/source
DESTHOST=machinename
DESTDIR=/path/to/destination
cd "$SOURCEDIR" && tar -c -v -f - . | ssh "$DESTHOST" "cd $DESTDIR && tar -x -p -f -"

Achtung: Wenn $DESTDIR Leerzeichen oder Sonderzeichen enthält, müssen die obigen Anführungszeichen sorgfältiger gesetzt werden.

verwandte Informationen