DD 명령에 포함된 디렉터리

DD 명령에 포함된 디렉터리

저는 dd리눅스에서 명령어를 배우고 있습니다. 테스트 목적으로 다음 명령을 실행했습니다.

 sudo dd bs=4M if=/dev/mmcblk0 of=/media/some_remote_host/stuff/myImage.img

나는 dd가 주어진 디스크/드라이브의 이미지를 찍는 데 사용된다는 것을 알고 있습니다. 그런데 유닉스 파일 구조에 따라 폴더를 마운트하는 내용도 포함되어 있는지 궁금합니다.(파일 구조), 예: /mnt 또는 /media. 찾으려고 노력했지만 찾을 수 없었습니다. /mnt 및 /media 디렉토리가 포함되어 있으면 무한 루프에 빠질 수 있다는 의미입니까? 쓰기와 동시에 /media 폴더의 내용을 색인화하고 저장하기 시작하기 때문입니다. 또는 *.img모든 폴더를 스캔하여 메모리에 저장할 때 실제 쓰기가 발생합니다.

핵심요약: dd명령에 /mnt 및 /media 폴더가 이미지에 포함됩니까?

당신이 저를 위해 이 질문들에 대답해 주실 수 있기를 바랍니다. 감사해요.

장비 사양:

  • Raspbian OS 32비트, 단일 드라이브(SD 카드).

답변1

dd는 파일 시스템의 마운트, 폴더 또는 UNIX 파일 구조에 대해 아무것도 모릅니다. dd는 원시 데이터와 원시 데이터 및 데이터 블록의 일부 간단한 변환에 대해서만 알고 있습니다. 원래는 블록 장치(디스크 및 테이프 포함)에서 데이터를 읽거나 쓰기 위해 설계되었으며 블록 데이터와 스트림 데이터 사이에서 데이터 구조 변경을 처리하고 간단한 문자 변환 및 패딩 조정을 수행할 수 있습니다.

쓰기 가능한 마운트 파일 시스템이 있는 장치에서 dd if=를 실행하는 것은 위험합니다. dd가 파일을 읽는 동안 파일 시스템이 변경될 수 있기 때문입니다. dd가 읽은 블록은 변경될 수 있으며(dd는 변경 사항을 볼 수 없음) 아직 읽지 않은 블록도 변경될 수 있으며 그 결과 출력 시 파일 시스템의 손상된 이미지가 나타납니다.

dd는 (아마도) 고정 크기 블록 장치에서 읽고 기본 파일 시스템에 대한 지식 없이 이를 읽기 때문에 출력이 동일한 파일 시스템의 파일에 기록되면 무한 루프가 되지 않습니다. 출력 이미지가 손상된 파일 시스템이 될 가능성과 심각도가 높아집니다.

디렉터리에 마운트된 파일 시스템은 상위 파일 시스템의 일부가 아니기 때문에(그러나 (빈) 디렉터리는 있음) dd 출력 이미지에 표시되지 않습니다(그러나 마운트 지점 아래에 있는 파일 시스템을 포함하여 디렉터리 자체는 표시됩니다). 파일(설치 전에 비어 있지 않은 경우).

답변2

dd는 if(입력 파일)에서 읽고 이를 of(출력 파일)로 덤프합니다. 이는 "if"의 바이너리 복사본이 됩니다. 이러한 파일은 파일 시스템 파일, 파일 시스템 자체, 원시 장치 등이 될 수 있습니다. 이 명령은 "if"에 있는 데이터 구조에서 아무 것도 생성하지 않습니다. 파일 시스템인 경우 운영 체제가 인식하는지 여부에 관계없이 복사합니다. 그러나 마운트된 파일 시스템 장치(예: if=/dev/sdb3)로 실행하는 것은 권장되지 않습니다.

비트 단위로 복사하기 때문에 dd 명령은 원격 공유의 마운트 지점에 도달할 때 이를 인식할 수 없으므로 무한 루프는 없지만 @user10489에 동의합니다. 위험합니다.

루트 파일 시스템을 백업하려는 경우 다른 시스템에서 수행하거나(카드 추출) 다른 카드에서 부팅한 후 백업을 원격 위치나 새 루트 파일 시스템에 있는 img 파일에 백업하는 것이 좋습니다.

관련 정보