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.
Verwandte Themen
- 1. Warum schlägt das Kopieren einer Struktur aus Benutzerbereich in einem ioctl-Befehl fehl?
- 2. .nuget Ordner im Benutzerbereich
- 3. "Ungültige ioctl für Gerät"
- 4. Linux Kernel Modul/IOCTL: unangemessenes ioctl für Gerät
- 5. unlocked_ioctl vs normalen ioctl
- 6. Ist es möglich, net_enable_timestamp() aus Benutzerbereich in Linux auszuführen?
- 7. Kann nicht Gerät Knoten aus Benutzerbereich in Android
- 8. Benutzerbereich vs Anwendungsbereich in app.config
- 9. Aktivieren Schreib-Kombinieren IO-Zugriff in Benutzerbereich
- 10. Benutzerbereich App Einstellungen immer auf Standardwerte zurückgesetzt
- 11. Google Analytics benutzerdefinierte Dimension Verwendung mit Benutzerbereich
- 12. Unterstützende Byte-Reihenfolge im Linux-Benutzerbereich
- 13. btrfs unkorrigierbarer Fehler bei unmodifizierter Datei nach dem Scrubben
- 14. WDF Interner IOCTL-Ausgang nicht ausgegeben
- 15. So verwenden Sie ioctl mit FS_IOC_FIEemap
- 16. Datenträgergröße von ioctl abrufen Anruf für Veritas-Datenträger größer als 2 TB
- 17. Was bedeutet ENXIO für ein i2c ioctl?
- 18. Spidev schreibt/liest nicht gleichzeitig mit ioctl
- 19. Wie testet man, ob der Ort ein btrfs Subvolumen ist?
- 20. V4L-Problem mit VidIOCGCAP ioctl Anruf
- 21. ioctl wird nicht aufgerufen, wenn cmd = 2
- 22. ioctl FIOREAD auf Raw-Socket in Linux
- 23. Passive WiFi-Scan mit ioctl auf Linux
- 24. Verwenden von Linux ioctl mit Mono
- 25. Architektur aus Java abrufen
- 26. Variablenwert aus addEventListener abrufen
- 27. Markersymbol aus Markierungsdatensatz abrufen
- 28. Werden Java-Threads im Benutzerbereich oder im Kernelbereich erstellt?
- 29. Was ist ein virtuelles Dateisystem oder ein Dateisystem im Benutzerbereich?
- 30. Zuordnung eines physischen Geräts zu einem Zeiger im Benutzerbereich
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