Ich habe einen Verzeichnisbaum, den ich auf optischen Datenträgern sichern möchte. Leider überschreitet es die Größe einer Festplatte (etwa 60 GB). Ich suche nach einem Skript, das diesen Baum in entsprechend große Teile mit harten Links oder so weiter aufteilt (wobei das Original unberührt bleibt). Ich könnte diese mundgerechten Bäume dann in den Sicherungsprozess einspeisen (PAR2-Redundanz hinzufügen usw.).
Es ist kein ausgefallenes Skript, aber es scheint, als wäre es bereits fertig. Vorschläge?
(Das Überspannen und Schreiben in einem Schritt ist ein No-Go, da ich mehr tun möchte, bevor die Dateien gebrannt werden.)
backup
disk-usage
split
burning
Reid
quelle
quelle
par2
Schutz verwenden.Antworten:
Es gibt eine Anwendung, die dafür entwickelt wurde:
dirsplit
Es lebt normalerweise in
cdrkit
oderdirsplit
Paketen.Es kann gebrauchsfertige Ordner mit Links erstellen, um DVDs einfach mit K3b oder einer anderen GUI-Software zu erstellen
quelle
genisoimage
Paket gefunden.Sie können auch fpart ausprobieren , ein Tool, das ich geschrieben habe (BSD-lizenziert): https://sourceforge.net/projects/fpart/
quelle
Ich habe einmal ein hässliches Skript für einen ähnlichen Zweck erstellt. Es ist nur ein Kludge, aber als ich es schrieb, war mir die Ausführungszeit oder die Schönheit egal. Ich bin mir sicher, dass es mehr "produktive" Versionen desselben Konzepts gibt, aber wenn Sie Ideen oder etwas zum Hacken haben möchten, gehen Sie wie folgt vor (haben Sie es 2008 getan, verwenden Sie es also auf eigenes Risiko!): - )
Ich glaube, ich hatte das Ergebnis über Samba an einen Windows-Host weitergegeben, der Discs davon gebrannt hat. Wenn Sie die oben genannten unverändert verwenden, möchten Sie möglicherweise einen
mkisofs
anderen Archivierer verwenden, der Symlinks auflöst.quelle
\[?*
) fertig zu werden . Empfohlene Lektüre: Analysieren Sie nicht die Ausgabe von ls , $ VAR vs $ {VAR} und zitieren Sie oder zitieren Sie nicht . Beachten Sie, dass ich das resultierende Skript nicht getestet habe. Wenn Sie eine meiner Änderungen nicht verstehen, können Sie sie gerne fragen.[
im Gegensatz zu nichttest
) ...Ich habe einmal ein Skript geschrieben, um ein ähnliches Problem zu lösen - ich habe es "verteilen" genannt (Sie können den Hauptcode des Skripts oder der Datei mit der Hilfemeldung lesen oder als Paket herunterladen ). aus seiner Beschreibung :
Der gesamte Vorgang wird in mehreren Schritten ausgeführt: In einer Phase werden die "Layouts" der Furure-Festplatte mithilfe von Symlinks zu den Originaldateien erstellt, sodass Sie eingreifen und die zukünftigen Festplattenbäume ändern können.
Die Details zu seiner Verwendung können in der vom Skript gedruckten Hilfemeldung (oder im Quellcode) nachgelesen werden.
Es wurde für einen schwierigeren Anwendungsfall geschrieben (Ausgabe von Updates als "Diff" - die Menge der hinzugefügten neuen Dateien - für die ursprünglich aufgezeichnete Dateisammlung), sodass es eine zusätzliche Anfangsphase enthält, nämlich "Fixing" "Der aktuelle Status der Dateisammlung (der Einfachheit halber wird dazu die ursprüngliche Dateisammlung mithilfe von Symlinks repliziert, und zwar an einem speziellen Arbeitsplatz, um die Status der Sammlung zu speichern. Dann, irgendwann in der Zukunft." wird in der Lage sein, einen Unterschied zwischen einem zukünftigen aktuellen Status der Dateisammlung und diesem gespeicherten Status zu erstellen). Obwohl Sie diese Funktion möglicherweise nicht benötigen, können Sie diese Anfangsphase, AFAIR, nicht überspringen.
Außerdem bin ich mir jetzt nicht sicher (ich habe es vor einigen Jahren geschrieben), ob es komplexe Bäume gut behandelt oder ob es nur einfache (einstufige) Dateiverzeichnisse aufteilen soll. (Bitte schauen Sie in die Hilfemeldung oder den Quellcode, um sicherzugehen. Ich werde dies auch etwas später nachschlagen, wenn ich etwas Zeit habe.)
Das APT-bezogene Material ist optional. Achten Sie also nicht darauf, dass es Paketsammlungen für die Verwendung durch APT vorbereiten kann, wenn Sie dies nicht benötigen.
Wenn Sie interessiert sind, können Sie es natürlich nach Ihren Wünschen umschreiben oder Verbesserungen vorschlagen.
(Bitte beachten Sie, dass das Paket zusätzliche nützliche Patches enthält, die nicht in der oben aufgeführten Codeliste des oben verlinkten Git-Repos enthalten sind!)
quelle
distribute
, der die hier gestellte wesentliche Aufgabe löst.Wir sollten nicht vergessen, dass das Wesentliche der Aufgabe in der Tat recht einfach ist; wie in einem Tutorial über Haskell (das sich um das Durcharbeiten der Lösung für diese Aufgabe dreht, schrittweise verfeinert)
(vom Per Anhalter durch Haskell, Kapitel 1 )
(Außerdem möchten Sie in Ihrer Frage in der Lage sein, die resultierenden Festplattenlayouts zu optimieren (zu bearbeiten) und sie dann mit einem Tool zu brennen.)
Sie können eine einfache Variante des Programms aus diesem Haskell-Tutorial zum Aufteilen Ihrer Dateisammlung wiederverwenden (anpassen und wiederverwenden).
Leider wird in dem
distribute
Tool, das ich hier in einer anderen Antwort erwähnt habe , die Einfachheit der wesentlichen Aufteilungsaufgabe nicht durch die Komplexität und Aufblähung der Benutzeroberfläche von erreichtdistribute
(da es geschrieben wurde, um mehrere Aufgaben zu kombinieren, obwohl es schrittweise ausgeführt wird). aber immer noch nicht so sauber kombiniert, wie ich es mir jetzt vorstellen kann).Um Ihnen zu helfen, den Code besser zu nutzen, finden Sie hier einen Auszug aus dem Bash-Code von
distribute
(in Zeile 380 ), der dazu dient, diese "wesentliche" Aufgabe des Aufteilens einer Sammlung von Dateien auszuführen :( Lesen Sie mehr nach Zeile 454 )
Beachten Sie, dass die
eatFiles
Funktion die Layouts der zukünftigen Datenträger als Bäume vorbereitet, in denen die Blätter Symlinks zu den realen Dateien darstellen. Es entspricht also Ihrer Anforderung, dass Sie die Layouts vor dem Brennen bearbeiten können müssen. Dasmkisofs
Dienstprogramm hat die Option, Symlinks zu folgen, die tatsächlich im Code meinermkiso
Funktion verwendet werden .Das vorgestellte Skript (das Sie natürlich nehmen und nach Ihren Wünschen umschreiben können!) Folgt der einfachsten Idee: Die Größe der Dateien (oder genauer gesagt der Pakete im Fall von
distribute
) nur in der angegebenen Reihenfolge zu summieren , don Keine Umlagerungen vornehmen.Der "Per Anhalter durch Haskell" nimmt das Optimierungsproblem ernst und schlägt Programmvarianten vor, die versuchen würden, die Dateien intelligent neu anzuordnen, damit sie besser auf Datenträger passen (und weniger Datenträger benötigen):
(Lesen Sie mehr in Kapitel 3 und weiter.)
Andere intelligente Werkzeuge
Mir wurde auch gesagt, dass Debian ein Tool verwendet, um seine Distributions-CDs zu
distribute
erstellen , das intelligenter ist als meine schriftlichen Paketsammlungen: Die Ergebnisse sind besser, weil es sich um Abhängigkeiten zwischen Paketen kümmert und versuchen würde, die Sammlung von Paketen zu erstellen, die sich weiterentwickeln Die erste Festplatte, die unter Abhängigkeiten geschlossen wurde, dh, kein Paket von der ersten Festplatte sollte ein Paket von einer anderen Festplatte erfordern (oder zumindest sollte die Anzahl solcher Abhängigkeiten minimiert werden).quelle
backup2l kann einen Großteil dieser Arbeit erledigen. Selbst wenn Sie das Paket nicht direkt verwenden, erhalten Sie möglicherweise einige Skriptideen.
quelle
Der
rar
Archivierer kann angewiesen werden, das von ihm erstellte Archiv automatisch in Blöcke einer bestimmten Größe mit dem-vsize
Flag aufzuteilen .Archivieren Sie diesen Verzeichnisbaum
foo
in Blöcken von beispielsweise 500 Megabyte pro Stück, die Sie angeben würdenrar a backup.rar -v500m foo/
quelle
rar
, es sei denn, Sie entpacken jedes "Teil" erneut in ein eigenes Verzeichnis, was natürlich nicht funktioniert, da die Teile nicht so gestaltet und nicht an Dateigrenzen aufgeteilt sind.tar
+split
-ähnliche Ergebnisse liefern, dann gibt es auch dar ; Hier ist der Hinweis zu seiner relevanten Funktion: "(SLICES) Es wurde entwickelt, um ein Archiv auf mehrere Wechselmedien aufteilen zu können, unabhängig von ihrer Anzahl und Größe." Im Vergleich zutar
+split
bietet es vermutlich einige einfachere Möglichkeiten, auf die archivierten Dateien zuzugreifen. (Übrigens hat es auch eine ähnliche Funktiondistribute
: "DIFFERENTIAL BACKUP" & "DIRECTORY TREE SNAPSHOT", aber es mag nicht gefallen, dass das Ergebnis ein spezielles Format ist, keine ISO mit einem