매우 큰 파일을 처리하세요

매우 큰 파일을 처리하세요

dd고장난 하드 드라이브에 대한 명령 의 출력인 2개의 매우 큰 파일(27G 및 40G)이 있습니다 . 27G 바이트가 40G의 시작/하위 문자열인지 확인하기 위해 첫 번째 바이트를 비교하고 싶었습니다.

명령을 사용하고 싶었습니다 head. 이 파일은 바이너리이므로 -c다음 인수를 사용했습니다.

# ls -ahl *.dd
-rw-r--r-- 1 root root 40G May 17 20:16 mac.dd
-rw-r--r-- 1 root root 27G May 18 09:47 mac2.dd

1K의 원시 데이터를 얻으려고 시도 중:

# head -c1K mac.dd
(returns nothing)

hexdump를 사용하여 1K를 얻으려고 합니다.

# head -c1K mac.dd | hexdump
0000000 0000 0000 0000 0000 0000 0000 0000 0000
*
0000400
(end)

hexdump를 사용하여 10K를 얻으려고 시도 중:

# head -c10K mac.dd | hexdump
0000000 0000 0000 0000 0000 0000 0000 0000 0000
*
0002800
(end)

하지만:

/bin/ls에서 100바이트의 원시 데이터를 얻으려고 합니다.

# head -c100 /bin/ls 
ELF>�H@@p�@8    @@@@@@�

/bin/ls에서 100바이트의 16진수 데이터를 가져오려고 합니다.

# head -c100 /bin/ls | hexdump
0000000 457f 464c 0102 0001 0000 0000 0000 0000
0000010 0002 003e 0001 0000 4880 0040 0000 0000
0000020 0040 0000 0000 0000 b670 0001 0000 0000
0000030 0000 0000 0040 0038 0009 0040 001c 001b
0000040 0006 0000 0005 0000 0040 0000 0000 0000
0000050 0040 0040 0000 0000 0040 0040 0000 0000
0000060 01f8 0000                              
0000064

mac2.dd의 결과는 정확히 동일하지만 출력이 실제로 내가 기대하는 것과는 다른 것 같아서 이것이 파일이 동일한 데이터로 시작한다는 의미는 아니라고 생각합니다. 바이너리에 대한 머리 /bin/ls는 내가 기대했던 것입니다.

이 파일 출력을 이해할 수 없습니다 dd. 누구든지 나에게 이것을 설명해 줄 수 있습니까?

감사합니다.

답변1

나는 나 자신에게 대답하고 있습니다.

에서 알아냈어요이 게시물, hexdump의 " "는 *"이전 줄과 동일"을 의미합니다. 내 전체 dd파일이 문자로 채워져 있음 을 의미합니다 \0.

다음을 사용하여 명시적으로 만들 수 있습니다.

head -c1000 mac.dd | hexdump -v
0000000 0000 0000 0000 0000 0000 0000 0000 0000
0000010 0000 0000 0000 0000 0000 0000 0000 0000
0000020 0000 0000 0000 0000 0000 0000 0000 0000
0000030 0000 0000 0000 0000 0000 0000 0000 0000
0000040 0000 0000 0000 0000 0000 0000 0000 0000
[...]

또는 더 짧은 방법으로:

# hexdump -v -n1000 mac.dd
0000000 0000 0000 0000 0000 0000 0000 0000 0000
0000010 0000 0000 0000 0000 0000 0000 0000 0000
0000020 0000 0000 0000 0000 0000 0000 0000 0000
0000030 0000 0000 0000 0000 0000 0000 0000 0000
0000040 0000 0000 0000 0000 0000 0000 0000 0000
[...]

이제 나는 그 dd쓰레기장에 아무것도 채워져 있지 않다는 것을 압니다.

여기까지 내 문제를 읽어주신 모든 분들께 감사드립니다.

관련 정보