Ich möchte die BTRFS-Prüfsummen beziehen, die sich auf die spezifische Datei beziehen, aber leider habe ich keine geeignete ioctl gefunden, um diese Aktion auszuführen. Ist es möglich zu tun? Wenn ja, wie geht das? Ich brauche gespeicherte Prüfsummen, um zu versuchen, die CPU-Last in Fällen zu reduzieren, die dem rsync-Verhalten ähnlich sind.btrfs ioctl: Dateiprüfsummen aus Benutzerbereich abrufen
7
A
Antwort
1
Gerade jetzt schob diesen chaotischen Code in meine GitHub Repo. https://github.com/Lakshmipathi/btrfs-progs/tree/dump_csum Es ist kein offizieller Code. Ich habe auf Dateien zwischen Größe 100K bis 50GB getestet. Sie scheinen zu passen.
Verbrauch:
./btrfs-debug-tree -f /path/to/file /btrfs/partition
wird csumdump Datei auf Ziel erstellen.
Beispiel:
sudo ./btrfs-debug-tree -f /btrfs/50gbfile1 /dev/sda4
wird eine Ausgabedatei-Namen erstellen '/btrfs/50gbfile1.csumdump' mit csum von Dateiblöcken.
Hinweis: Ich habe dies aus pädagogischen/Lerngründen versucht, also kommt es mit allen üblichen Disclaimern. Ich plane diesen Code irgendwann diese Woche zu bereinigen.
Wenn Sie verwenden möchten, würde ich Ihnen empfehlen, mit folgenden Fällen zu testen:
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.
BTW, erzeugt Btrfs Prüfsummen für * Blöcke *, nicht für * Dateien * (AFAIK). – gavv
Das ist genau was ich will: eine Liste von Prüfsummen für Blöcke der gegebenen Datei. – 0x2207
Ich habe den Quellcode überflogen und ich sehe keine Schnittstelle, um die Prüfsummenwerte zu erhalten. – rodrigo