Deduplikation von aehnlichen Ordnern

kpj

NGBler
Registriert
27 Juli 2014
Beiträge
98
Moin,

ich suche eine Moeglichkeit, mit der ich Dateien zwischen mehreren Ordner deduplizieren und nur bei Bedarf tatsaechlich neu schreiben kann.

Mein Use-Case ist, dass ich viele Ordner (wine-prefixes) habe, die sich groesstenteils aehnlich sind, aber in ein paar Dateien unterscheiden (verschiedene Konfigurationen, wie zB library-overrides, etc). Momentan speichere ich diese einfach als einzelne Ordner, was entsprechend Platz wegnimmt.
Effizienter waere es, aehnlich wie bei Docker-Kernels, eine "Master-Kopie" zu haben und in allen Derivaten nur Unterschiede zu speichern.

Haette jemand von euch eine Idee, wie ich das am Besten erreichen koennte?
Vielen Dank fuer alle Hinweise!

Gruss,
kpj
 
@kpj: BTRFS und Subvolumes. Erstelle ein Master-Volume, und daraus eine Subvolume-Kopie. Die liegen dann nebeneinander, zeigen den gleichen Inhalt, nehmen aber nur einfach Platz weg, egal wie viele es sind. Danach kannst du die entsprechenden Ordner (die Volumes im BTRFS werden auch als Folder angezeigt) mergen, es werden dann nur die jeweiligen Unterschiede tatsächlich auf der Festplatte abgespeichert.
 
  • Thread Starter Thread Starter
  • #3
Das wuerde dann aber bedeuten, dass ich mein komplettes FS auf BTRFS umformatieren muesste, oder?

Am Liebsten wuerde ich das ganze FS-unabhaengig gestalten.
Ich schreibe mir naemlich gerade ein kleines Script, dass wine-prefixes managed und haette gerne als Feature, dass viele Prefixe nicht super-viel Speicher wegnehmen.

Eine naive Idee von mir war, irgendwie geschickt soft links zu legen, habe aber das Gefuehl, dass das schnell kompliziert und kaputt wird.
 
Eine naive Idee von mir war, irgendwie geschickt soft links zu legen, habe aber das Gefuehl, dass das schnell kompliziert und kaputt wird.

Genau das. Klar funktioniert es, aber halt nicht wirklich zuverlässig, zumindest nicht, wenn du im laufenden Betrieb Daten änderst (und dann auf einmal Softlinks durch Kopien ersetzen musst). Initial ist das sogar recht einfach machbar mit Softlinks, aber es ist halt one-shot, und danach sollte nix mehr geändert werden.

Ja, dein Dateisystem müsstest du mit BTRFS formatieren, das ist korrekt. Allerdings könntest du auch ne eigene Partition nehmen (oder nen imagefile), die/das du dann in den .wine-Folder mountest und dort das BTRFS drauf hast. Das lässt deine anderen Daten hübsch weiter auf ext4.
 
  • Thread Starter Thread Starter
  • #5
Ich wuerde das ganze am Liebsten so automatisiert wie moeglich machen (damit es evtl auch andere Leute nutzen koennen).

Das mit der BTRFS-Image-File hoert sich daher ziemlich cool an.
Das ganze wuerde man dann in etwa machen, oder?

Weisst du, ob man die Groesse dieser Image-File automatisch an den Inhalt des BTRFS-Volumens anpassen koennte, oder muss man das manuel mit zB `truncate` machen?
 
@kpj: Truncate macht das automatisch. Du erstellst ein Image mit 200 GB, truncate lässt es aber erstmal nur so viel Platz belegen, wie das Dateisystem selbst braucht. Das Device wird aber als 200 GB erkannt und verwendet, es wächst halt mit der Zeit (immer, wenn du einen weiteren Sektor beschreibst). Bin mir grad nicht sicher, ob das mit mount *irgendein image* auf jeder Distro funktioniert, dass er das automatisch erstellt, kannst aber mal probieren. Ich mein, im schlimmsten Fall musst du halt ein paar Imagedateien löschen, die du kurz vorher testhalber erstellt hast. Ist bei mir schon ne Weile her, seit ich das zum letzten Mal gebraucht hab.
 
  • Thread Starter Thread Starter
  • #7
Super, vielen Dank schonmal soweit! :)
Das mit der BTRFS-Image-File funktioniert wunderbar, und ich kann sie auch mounten und BTRFS-Subvolumes erstellen.

Ich verstehe jetzt aber gerade nicht ganz, was du in deinem ersten Post mit "Erstelle ein Master-Volume, und daraus eine Subvolume-Kopie." meinst.
Soweit wie ich es verstehe, kann man nur per
[src=bash]btrfs subvolume create sub01[/src]
ein Subvolumen erstellen. Wo genau kommt jetzt ein Master-Volumen mit Kopien ins Spiel?
 
@kpj: Das Ganze nennt sich "Snapshot". Ein Snapshot kann von einem Subvolume erstellt und dann beliebig verändert werden. Das Quellvolume wäre dann der Master, der von dir mehrfach gesnapshotted wird. In den resultierenden Subvolumes kannst du dann arbeiten.
 
  • Thread Starter Thread Starter
  • #9
Ah, macht Sinn. Ich werde damit mal ein bisschen rumspielen.

Vielen Dank fuer deine Hilfe!
 
Zurück
Oben