사용자가 USB 디스크를 백업 대상으로 선택할 수 있는 스크립트를 작성 중입니다. 아이디어는 전체 장치에 걸쳐 있는 파티션을 만드는 것입니다. lsusb
공급업체 ID와 이름이 주어지면 이를 사용자에게 제시하려고 합니다.
분명히 다른 장치가 아닌 디스크만 나열하고 싶습니다. 또한 /dev
사용자가 선택한 디스크의 장치 이름을 알아야 해당 디스크에 파티션을 만들 수 있습니다. 나는 거기에 있는 다양한 심볼릭 링크를 살펴보고 /dev/disk/
상호 /sys/
참조를 찾으려고 노력했습니다. 나는 이점을 활용 lsblk
하고 df
목표를 달성 하지 못했습니다 . 나는 알고 싶다:
lsusb
어떤 USB 장치가 디스크인지 확인하기 위해 제공된 정보를 어떻게 사용할 수 있습니까 ?lsusb
제공된 정보를 사용하여/dev
특정 장치의 장치 이름을 얻으려면 어떻게 해야 합니까 ?
답변1
귀하의 질문에 대한 대답은 스크립트를 트리거하는 데 어떤 메커니즘이 사용되는지에 따라 다소 달라집니다.
어떤 종류의 백업 프로그램에서 스크립트를 호출한다고 가정하면 USB 장치가 연결될 때 프로그램이 즉시 호출되지 않습니다.우데브규칙(예: 규칙)을 사용하여 udevadm info
필요한 모든 정보를 수집할 수 있습니다.
아이디어는 다음과 같습니다.
- 연결된 USB 드라이브에는 자동으로 장치 노드가 할당됩니다./dev/sdX커널별
- 모든 장치 노드를 반복하는 경우/dev/sd[az](또는 실제로 존재하는 것이 무엇이든/개발/) 각 드라이브를 호출하면
udevadm info --query=all /dev/sdX
출력에 다음과 같은 줄이 있으므로 그 중 어느 드라이브가 USB 드라이브인지 알 수 있습니다.
E: ID_BUS=usb
- 마찬가지로, 다음과 같은 공급업체와 모델이 포함된 출력 라인을 찾을 수 있습니다.
E: ID_MODEL=Flash_Disk
< ... >
E: ID_VENDOR=Generic
udevadm
따라서 using 또는 유사한 결과를 구문 분석하면 grep
목적에 필요한 모든 정보를 수집할 수 있습니다.