Sto cercando una soluzione deduplicante di filesystem copy-on-write per dati di utenti generali come /home
e backup di esso. Dovrebbe utilizzare la deduplicazione online / in linea / sincrona a livello di blocco utilizzando l'hash sicuro (per probabilità trascurabile di collisioni) come SHA256 o TTH . I blocchi duplicati non devono nemmeno toccare il disco.
L'idea è che dovrei essere in grado di copiare /home/<user>
su un HDD esterno con lo stesso filesystem per fare un backup. Semplice. Non si scherza con i backup incrementali in cui la corruzione a una qualsiasi delle istantanee interromperà quasi sempre tutte le istantanee successive e non sarà necessario utilizzare uno strumento specifico per eliminare o "estrarre" un'istantanea. Tutto dovrebbe semplicemente essere fatto dal browser dei file senza preoccupazioni. Riesci a immaginare quanto sarebbe facile? Non dovrei mai più pensarci due volte sul backup!
Non mi dispiace un colpo di prestazione, l'affidabilità è la preoccupazione principale. Anche se, con le implementazioni specifiche di cp
, mv
e scp
, e un plugin per il browser di file, queste operazioni sarebbero molto veloce, soprattutto quando c'è un sacco di doppioni come avrebbero solo bisogno di trasferire i blocchi assenti. L'uso accidentale di strumenti di copia convenzionali che non si integrano con FS richiederebbe semplicemente più tempo, sprecando un po 'di larghezza di banda durante la copia in remoto e sprecando parte della CPU, poiché i dati duplicati sarebbero riletti, trasferiti e rielaborati (anche se nulla sarebbe riscritto), ma non corromperà assolutamente nulla. (Alcuni software di condivisione file possono anche essere in grado di trarre vantaggio dall'integrazione con FS.)
Qual è il modo migliore per farlo?
Ho esaminato alcune opzioni:
- lessfs - Sembra non mantenuto. Nulla di buono?
- Opendedup / SDFS - Java? Potrei usarlo su Android ?! Cosa significa SDFS ?
- Btrfs - Alcune patch che fluttuano negli archivi delle mailing list, ma non supportano realmente.
- ZFS - Si spera che un giorno si riconsegneranno con una vera licenza compatibile GPL gratuita / opensource.
Inoltre, 2 anni fa ho tentato in Python di utilizzare Fuse a livello di file per essere utilizzato sopra un solido FS tipico come EXT4, ma ho trovato Fuse per Python non documentato e non sono riuscito a implementare tutte le chiamate di sistema.