ฉันต้องทำสิ่งที่คล้ายกันดังนั้นฉันคิดว่าฉันจะแบ่งปันวิธีแก้ปัญหาของฉัน
คุณสามารถดูได้ว่าพาร์ทิชันใดที่ออฟเซ็ตของไดรฟ์ไบต์เป็นของโดยการตรวจสอบองค์ประกอบ 'ออฟเซ็ต' และ 'ขนาด' ของ udisks - แสดงเอาต์พุต -show-info เช่น.
user@host:~$ sudo udisks --show-info /dev/sda1 | grep -i 'offset'
offset: 1048576
alignment offset: 0
ลบออฟเซ็ตนี้จากดิสก์ออฟเซ็ตเพื่อรับไบต์ออฟเซ็ตในพาร์ติชัน ดังนั้นดิสก์ออฟเซ็ต (10,000000) ใน / dev / sda คือพาร์ติชั่นออฟเซ็ต (10,000000 - 1048576) = 8951424 in / dev / sda1
คุณสามารถค้นหาว่าบล็อกขนาดใหญ่อยู่ในพาร์ติชันโดยใช้คำสั่งต่อไปนี้:
user@host:~$ sudo tune2fs -l /dev/sda1 | grep -i 'block size'
Block size: 4096
แบ่งพาร์ติชั่นไบต์ออฟเซ็ตด้วยขนาดบล็อกเพื่อกำหนดบล็อกออฟเซ็ตในกรณีนี้ 8951424/4096 = 2185
เรียกใช้คำสั่งต่อไปนี้เพื่อค้นหาว่า inode ใดครอบครองบล็อกนั้น:
user@host:~$ sudo debugfs -R "icheck 2185" /dev/sda1
debugfs 1.41.11 (14-Mar-2010)
Block Inode number
2185 123456
จากนั้นคำสั่งต่อไปนี้เพื่อค้นหาว่าชื่อไฟล์มีไว้สำหรับ inode นั้น:
user@host:~$ sudo debugfs -R "ncheck 123456" /dev/sda1
debugfs 1.41.11 (14-Mar-2010)
Inode Pathname
123456 /tmp/some-filename.txt
มีคำอธิบายเพิ่มเติมเกี่ยวกับวิธีการที่ http://www.randomnoun.com/wp/2013/09/12/determining-the-file-at-a-specific-vmdk-offset