블록 레벨에서 ext3 파일 시스템에 액세스하는 가장 쉬운 방법은 무엇입니까? 파일이나 원시 바이트를 신경 쓰지 않고 한 번에 FS 블록 하나만 읽어야합니다. C에서이 작업을 수행하는 간단한 방법이 있습니까? 아니면 내가 소스에서 영감을 조사 할 수있는 간단한 앱일까요? 사용 가능한 튜토리얼을 그물에서 발견하지 못했고, 커널 소스를 어떻게 사용하는지 알아보기가 무서워요.ext3 파일 시스템에서 블록을 읽으시겠습니까?
답변
예, e2fsprogs을 참조하십시오. 이것은 ext2, ext3 및 ext4 파일 시스템으로 무엇이든 할 수있는 도구 (!)를 제공합니다. 또한 라이브러리 인터페이스가 포함되어 있으므로 다른 작업을 수행 할 수 있습니다.
포함 된 debugfs를 참조하십시오. 시작하는 것으로 충분할 수 있습니다. 그렇지 않으면 헤더를 체크 아웃하고 코드를 작성하십시오. 그 안에
디스크 장치, 파티션, 그냥 당신은 물론 루트해야 당신이 읽고 (및 쓰기) 할 수 있습니다 일반 파일, 예컨대 :
head -c 2048 /dev/sda1 > first_2048_bytes
처럼 행동.
보통'dd'에 우선적으로 접근한다. 리눅스는 신경 쓰지 않지만, 전통적으로 블록 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를 설정 함)는 부호없는 short를 반환합니다. –
@tinkertim 네, 맞습니다! –
- 1. mv() Linux ext3 파일 시스템에서
- 2. EXT3 파일 시스템 사전 다이제스트 자료
- 3. 가상 파일 시스템에서 심볼릭 링크 구현
- 4. 분산 파일 시스템에서 파일 순회
- 5. 파일 시스템에서 문서 검색
- 6. ext3 리눅스 커널 구현
- 7. 원격 컴퓨터에서 파일 (.txt/.xml)을 읽으시겠습니까?
- 8. Actionscript 3, 컴파일시 파일 텍스트를 읽으시겠습니까?
- 9. 동일한 루프에서 파일 + 다운로드 웹 페이지를 읽으시겠습니까?
- 10. System.Drawing Image.From 사용자의 파일 시스템에서 파일
- 11. 다른 파일 시스템에서 같은 파일 사용
- 12. ext3 파일 시스템 손상을 어떻게 시뮬레이트 할 수 있습니까?
- 13. 폴더가 ext3 파일 시스템에 얼마나 많은 파일을 저장할 수 있습니까?
- 14. 압축 할 EXT3 파일 시스템에 사용할 수있는 패치가 있습니까?
- 15. 메이크 및 RM -f 파일 {EXT1, EXT2, EXT3} 문제
- 16. 안드로이드의 파일 시스템에서 리소스 작성
- 17. 리눅스 파일 시스템에서 루프 만들기
- 18. 파일 시스템에서 실행되는 SSIS pckage
- 19. UNIX 시스템에서 JAR 파일 업데이트
- 20. FAT32 파일 시스템에서 파이썬으로 작업하기
- 21. 전체 시스템에서 파일 확장자 검색
- 22. 이메일을 읽으시겠습니까?
- 23. Linux ext3 readdir 및 동시 업데이트
- 24. WordPerfect 파일을 파이썬으로 읽으시겠습니까?
- 25. "file"개체의 내용을 읽으시겠습니까?
- 26. 자바, 현재 디렉토리에서 파일을 읽으시겠습니까?
- 27. 자바 bmp 파일을 읽으시겠습니까?
- 28. Zend_Http_Client - 스트림에서 읽으시겠습니까?
- 29. XDML로 XHTML을 읽으시겠습니까?
- 30. 코코아 - 파일의 내용을 읽으시겠습니까?
dd와 같은 기능을 제공합니다. 지금까지 내가 오프셋과 길이 등을 정의 할 수 있다는 것을 기억한다. – Bobby