ค้นหาว่าอุปกรณ์เฉพาะนั้นเป็นที่เก็บข้อมูลขนาดใหญ่ USB หรือไม่


10

บริบท

ฉันกำลังถ่ายภาพ SD การ์ดโดยอัตโนมัติจากddภาพโรงงานที่มีอยู่ การ์ด SD มีการเชื่อมต่อเสมอผ่านเครื่องอ่านการ์ด USB /dev/sd*ภายนอกและทำให้ปรากฏขึ้นในระบบเป็นอุปกรณ์ป้องกัน

ปัจจุบันไวยากรณ์ของคำสั่งของฉันคือ: write-image DEVICEที่ไหนDEVICEคืออุปกรณ์บล็อกการ์ด SD เช่น /dev/sdd.

ปัญหา

ฉันได้ทำการตรวจสอบขั้นพื้นฐานDEVICEเพื่อยืนยันว่าเป็นของฟอร์ม/dev/sd*แต่ยังไม่เพียงพอ: ฉันกลัวว่าผู้ใช้ (คนที่ไม่ได้ใช้กับ Linux) ทำสิ่งที่ผิดพลาดและระบุอุปกรณ์อื่นที่ดูเหมือนจะใช้ได้เช่น /dev/sda. คุณสามารถเห็นความหายนะที่กำลังเกิดขึ้นโดยเฉพาะอย่างยิ่งเมื่อสคริปต์การถ่ายภาพของฉันต้องการสิทธิ์รูท (ไม่ต้องเขียนภาพเองคุณต้องใส่ใจ แต่ต้องแก้ไขการ์ด SD หลังจากนั้นรวมถึงการปรับขนาดพาร์ติชันขึ้นอยู่กับขนาดจริงของการ์ด SD) ...

คำถาม

ฉันต้องการตรวจสอบว่าอุปกรณ์ที่ระบุจริง ๆ แล้วเป็นที่เก็บข้อมูล USB จำนวนมาก (หรืออย่างน้อยที่สุดก็เป็นอุปกรณ์ถอดได้) เพื่อให้ฉันสามารถป้องกันดิสก์ระบบไม่ให้ถูกทิ้งในถังขยะโดยไม่ได้ตั้งใจ ฉันจะทำสิ่งนั้นได้อย่างไร

ฉันพบว่าไม่มีอะไรเกี่ยวข้องใน/procหรือบนเว็บตอนนี้ฉันค่อนข้างจะสูญเสีย

คำตอบ:


10

ดูที่ใต้/sys/ไดเรกทอรี โดยเฉพาะอย่างยิ่ง/sys/block/มี symlinks /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/ซึ่งอาจมีประโยชน์

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.