2015-09-24 8 views
7

Vorrei ottenere i checksum BTRFS relativi al file specifico, ma sfortunatamente non ho trovato ioctl appropriato per eseguire questa azione. È possibile farlo? Se sì, come farlo? Ho bisogno di checksum memorizzati per cercare di ridurre il carico della CPU in casi simili al comportamento di rsync.btrfs ioctl: ottiene i checksum dei file dallo spazio utente

+2

BTW, Btrfs genera checksum per * * blocchi, non per i file * * (per quanto ne so). – gavv

+2

Questo è esattamente ciò che voglio: un elenco di checksum per i blocchi del file specificato. – 0x2207

+1

Sto sfogliando il codice sorgente e non vedo alcuna interfaccia per ottenere i valori di checksum. – rodrigo

risposta

1

Proprio ora ha spinto questo codice disordinato nel mio repository Github. Il suo codice non ufficiale. Ho testato i file da 100 a 50 GB. Sembrano abbinabili.

Usage:

./btrfs-debug-tree -f /path/to/file /btrfs/partition 

creerà csumdump file alla destinazione.

Esempio:

sudo ./btrfs-debug-tree -f /btrfs/50gbfile1 /dev/sda4 

creerà un file di nome in uscita '/btrfs/50gbfile1.csumdump' con csum di blocchi di file.

Nota: stavo provando a farlo per scopi educativi/di apprendimento, quindi viene fornito con tutte le normali dichiarazioni di non responsabilità. Pianificazione per ripulire questo codice a volte questa settimana.

Se si prevede di utilizzare, ti consiglierei di provare con i seguenti casi:

1) Create 20GB (or any file with size > 1KB) on /tmp/ 
2) mount your btrfs partition on /btrfs and copy file /tmp/file /btrfs/f1 
3) Now dump the csum it will produce /btrfs/f1.csumdump 
4) cp /tmp/file /btrfs/f2 and dump f2's csum. 
5) Now compare f1.csumdump with f2.csumdump If they match, it seems to be 
working. If they didn't match something went wrong. 
Problemi correlati