[unix] 특정 장치가 USB 대용량 저장 장치인지 확인

문맥

기존 dd공장 이미지 에서 SD 카드 이미징을 자동화하고 있습니다. SD 카드는 항상 외부 USB 카드 리더를 통해 연결되므로 시스템에서 SCSI 블록 장치로 나타납니다 /dev/sd*.

현재 내 명령의 구문은 다음과 같습니다 write-image DEVICE. DEVICESD 카드 블록 장치는 어디에 있습니까 ? /dev/sdd.

문제

이미 DEVICE형식을 확인하기 위해 기본 점검을 하고 /dev/sd*있지만 충분하지 않습니다. 사용자 (Linux에 익숙하지 않은 프로덕션 사용자)가 실수를하고 다른 유효한 장치를 지정하는 것을 두려워합니다. /dev/sda. 특히 내 이미징 스크립트에 루트 권한이 필요하기 때문에 어렴풋한 재앙을 볼 수 있습니다 (이미지 자체를 쓰지 말고 기억하고 나중에 SD 카드의 실제 크기에 따라 파티션 크기 조정을 포함하여 SD 카드를 수정해야 함).

질문

시스템 디스크가 실수로 휴지통에 쌓이지 않도록 보호 할 수 있도록 지정된 장치가 실제로 일부 USB 대용량 저장소 (또는 최소한 이동식 장치)인지 확인하고 싶습니다. 어떻게해야합니까?

나는 /proc웹 에서 또는 웹 에서 관련성을 발견하지 못했습니다 .



답변

/sys/디렉토리 아래를 살펴보십시오 . 특히에 /sys/block/장치를 차단하는 심볼릭 링크가 포함되어 있습니다 /sys/devices/.

/sys/block/sdX/removable이동식 장치의 경우 1로 표시되고 그렇지 않으면 0으로 표시됩니다. 이것은 제거 가능성에 대한 기본 점검을 제공합니다.

USB 장치인지 확인하는 더 좋은 방법이 있는지 확실하지 않지만
readlink /sys/block/sde과 같은 것을 뱉어냅니다 ../devices/pci0000:00/0000:00:1d.0/usb6/6-1/6-1.2/6-1.2:1.0/host7/target7:0:0/7:0:0:0/block/sde. usb*폴더가 포함되어 있는지 확인하면 간단한 확인으로 작동 할 수 있습니다.

에서 공급 업체 및 모델과 같은 다른 장치 세부 정보를 얻을 /sys/block/sdX/device/수도 있습니다.


답변