在塊級別訪問ext3文件系統的最簡單方法是什麼?我不在乎文件或原始字節,我只需一次讀取FS塊。有沒有簡單的方法來做到這一點(在C)?或者,也許一個簡單的應用程序,其源可以調查靈感?我在網上找不到有用的教程,我有點害怕深入內核源代碼,以瞭解如何做到這一點。從ext3文件系統讀取塊?
回答
是的,請參閱e2fsprogs。這提供了可用於使用ext2,ext3和ext4文件系統執行任何操作(!)的工具。它還包含一個庫接口,所以你可以做任何事情。
查看包含的debugfs,啓動它可能就足夠了。否則,請查看標題並編寫一些代碼。
的磁盤設備,並在他們的分區,使用起來就像是你需要成爲當然的根普通文件,你可以從閱讀(寫),例如:
head -c 2048 /dev/sda1 > first_2048_bytes
。
通常你會首先達到'dd',我認爲...... Linux並不在意,但傳統上阻塞設備只允許塊I/O。 – ephemient
同意ephemient,dd是更好的工具。 –
同意,只是認爲指出磁盤設備可以像普通文件一樣對待可能是有幫助的(這對我來說是一個驚喜,來自DOS幾年前......) –
如果你想要一個簡單的應用程序,那麼我建議你可以看看「dd」實用程序。我來作爲GNU Core Utility的一部分。它的來源可供下載。看看它的主頁,here。
如果您想從C代碼實現相同的功能,請參閱以下代碼。希望這可以幫助你。 :)
#include <stdio.h>
#include <linux/fs.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#define SECTOR_NO 10 /*read 10th sector*/
int main()
{
int sector_size;
char *buf;
int n = SECTOR_NO;
int fd = open("/dev/sda1", O_RDONLY|O_NONBLOCK);
ioctl(fd, BLKSSZGET, §or_size);
printf("%d\n", sector_size);
lseek(fd, n*sector_size, SEEK_SET);
buf = malloc(sector_size);
read(fd, buf, sector_size);
return 0;
}
爲什麼O_NONBLOCK?除非打開一個特殊的設備(例如調制解調器),否則您會想要阻止某些忙碌或存在挑戰的事情,是的? –
此外,內核中的bdev_logical_block_size()(通過由ioctl處理程序返回,實際上在您的示例中設置sector_size)將返回一個無符號短整數。 –
@tinkertim是的,你是對的! –
- 1. EXT3文件系統預摘要素材
- 2. 從文件系統讀取xml
- 3. 獲取ext3和其他文件系統的類似nfsstat的統計信息
- 4. Dojo使用dojo.xhrGet從本地文件系統讀取json文件
- 5. 如何從文件系統讀取大量的XML文件
- 6. 如何從Openshift文件系統寫入/讀取文件?
- 7. 從Windows文件系統讀取文件屬性?
- 8. 從文件系統讀取文件時的併發性
- 9. 如何從系統文件夾讀取文件
- 10. 如何從ext2/ext3文件系統上的稀疏文件中刪除某些塊
- 11. 讀取文件系統並返回它
- 12. Google文件系統讀取一致性
- 13. 如何模擬ext3文件系統損壞?
- 14. 有沒有可用於EXT3文件系統壓縮的補丁?
- 15. 是否有ext2/ext3/ext4文件系統的官方規範?
- 16. 如何構建定製的ext3文件系統
- 17. ext3需要定期檢查文件系統嗎?
- 18. 強制讀取系統調用塊
- 19. 文件夾可以在ext3文件系統中保存多少個文件?
- 20. UNIX系統和Windows系統中讀取.CSV文件的差異
- 21. 從系統讀取文本文件到Hbase MapReduce
- 22. 從Linux內核中讀取文件系統事件(不帶Inotify)
- 23. 文件系統塊大小
- 24. Android:只讀文件系統
- 25. 只讀文件系統
- 26. java.io.FileNotFoundException:output.mp4(只讀文件系統)
- 27. 直接從原始分區從ext4文件系統讀取數據,無需掛載文件系統
- 28. Ubuntu非只讀文件系統非系統文件
- 29. 從文件系統
- 30. 從java中讀取文件系統結構
dd提供這樣的功能。據我記得你可以定義偏移量和長度等。 – Bobby