Ich suche nach einer deduplizierenden Copy-on-Write-Dateisystemlösung für allgemeine Benutzerdaten wie /home
und Backups davon. Es sollte eine Online- / Inline- / synchrone Deduplizierung auf Blockebene mit sicherem Hashing (für vernachlässigbare Kollisionsgefahr) wie SHA256 oder TTH verwenden . Doppelte Blöcke müssen nicht einmal die Festplatte berühren.
Die Idee ist, dass ich in der Lage sein sollte, /home/<user>
mit demselben Dateisystem einfach auf eine externe Festplatte zu kopieren , um eine Sicherung durchzuführen. Einfach. Kein Herumspielen mit inkrementellen Sicherungen, bei denen eine Beschädigung eines der Snapshots fast immer alle späteren Snapshots beschädigt, und kein spezielles Tool zum Löschen oder "Auschecken" eines Snapshots erforderlich ist. Alles sollte einfach über den Dateibrowser ohne Sorgen erledigt werden. Können Sie sich vorstellen, wie einfach das wäre? Ich würde nie wieder zweimal über ein Backup nachdenken müssen!
Ich habe nichts gegen einen Leistungseinbruch, Zuverlässigkeit ist das Hauptanliegen. Mit bestimmten Implementierungen von cp
, mv
und scp
und einem Dateibrowser-Plugin wären diese Vorgänge jedoch sehr schnell, insbesondere wenn viel dupliziert wird, da nur die fehlenden Blöcke übertragen werden müssten. Die versehentliche Verwendung herkömmlicher Kopiertools, die nicht in den FS integriert sind, würde lediglich länger dauern, beim Remote-Kopieren etwas Bandbreite verschwenden und etwas CPU verschwenden, da die doppelten Daten erneut gelesen, erneut übertragen und erneut gehasht würden (obwohl nichts wäre) neu geschrieben), würde aber absolut nichts beschädigen. (Einige Filesharing-Software kann möglicherweise auch von der Integration in den FS profitieren.)
Was ist der beste Weg, dies zu tun?
Ich habe mir einige Optionen angesehen:
- lessfs - Sieht nicht gepflegt aus. Jeder gute?
- Opendedup / SDFS - Java? Könnte ich das auf Android verwenden?! Wofür steht SDFS ?
- Btrfs - Einige Patches schweben in Mailinglisten-Archiven herum, aber keine wirkliche Unterstützung.
- ZFS - Hoffentlich werden sie eines Tages eine Lizenz unter einer echten Free / Opensource GPL-kompatiblen Lizenz neu vergeben.
Vor zwei Jahren habe ich versucht, in Python Fuse auf Dateiebene zu verwenden, um es über einem typischen soliden FS wie EXT4 zu verwenden, aber ich fand Fuse for Python unterdokumentiert und konnte es nicht implementieren Alle Systemaufrufe.