Ich muss im Rahmen einer Anwendungsmigration eine Verzeichnisstruktur auf einen neuen Host kopieren. Die Verzeichnisstruktur sieht wie folgt aus:
{10 - ff} / {00 - ff} / {00 - ff} (nicht inklusive) / uniquefilename
Es gibt also Millionen von Dateien. Die dritte Ebene des Baums ist nicht vollständig ausgefüllt, und nicht jedes Verzeichnis der dritten Ebene enthält eine Datei.
Ein du dauert sogar bei einem Ordner der zweiten Ebene SEHR lange. Die Verwendung von tar | nc würde 10 Tage dauern. Ich kann einen Ausfall von 1 Tag haben, aber nicht von 10.
Antwort1
Verwenden Sie rsync
hierfür.
- Bevor Sie auf den neuen Server umsteigen müssen, migrieren Sie
rsync
das gesamte Verzeichnis von einem Host zum anderen. So wie es klingt, wird dies lange dauern. - Führen Sie es nach Abschluss
rsync
erneut aus, um alle während des ersten Rsync geänderten Dateien abzufangen. - Führen Sie die regelmäßigen
rsync
Durchläufe so lange durch, bis Sie die Umstellung durchführen möchten. Dies dient lediglich dazu, das zu übertragende Datenvolumen gering zu halten. - Führen Sie eine Unterbrechung durch und stoppen Sie alle Schreibvorgänge auf dem alten Server.
- Führen Sie eine letzte
rsync
- Starten der Dienste auf dem neuen Server
Antwort2
Wenn diese Verzeichnisstruktur den Großteil der Daten auf dem Gerät/der Partition ausmacht, ignorieren Sie die Verzeichnisstruktur, sofern sie das Problem verursacht.
Hängen Sie stattdessen das Gerät aus (oder mounten Sie es schreibgeschützt erneut) und verwenden Sie dd(1)
netcat, um die Dateisystemblöcke auf eine Partition derselben Größe auf dem neuen Host zu kopieren.
Wenn irrelevante Daten außerhalb der gewünschten Hierarchie vorhanden sind, löschen Sie diese nach der Migration.
Sie können auch in Erwägung ziehen, das Laufwerk herauszuziehen und an den neuen Host anzuschließen, wenn das Netzwerk zwischen den Hosts einen Engpass darstellen könnte.
Antwort3
Für eine einmalige Kopie und wenn Sie Quelle und Ziel auf demselben System mounten können, können Sie
find [source top dir] | cpio -dump [target mountpoint]
Es kopiert und behält die Dateiattribute bei. Im CPIO-Tool sollte auch ein Komprimierungsparameter vorhanden sein.