Mount

如何確保某些設備始終使用相同的設備文件?

  • July 26, 2016

通過 UUID 和另一個通過設備文件安裝硬碟驅動器時,我如何確保第一個始終是 /dev/sdaX 而第二個 /dev/sdbX 而不是相反?

我正在嘗試做的一些解釋:我將一個樹莓派零、一個 USB 集線器、一個外部硬碟驅動器和一個 SD 卡(全部由移動電源供電)連接在一起。然後,當我打開樹莓派的電源時,它應該會自動備份外部硬碟驅動器上的 sd 卡。

簡化的 fstab 如下所示:

...
uuid=123123   /mnt/exthd   ntfs   rw,... 0 0
/dev/sdb1     /mnt/sdcard  vfat   ro,... 0 0

我無法通過 UUID 安裝 sd 卡,因為當我格式化卡或使用另一張卡時它會改變。

問題是,我可以確定外部驅動器總是使用 /dev/sda1 安裝的嗎?

或者我是否必須解析例如 的輸出lsblk,查看哪個設備的尺寸更小,然後使用這個設備文件?

請注意,我不會從覆盆子或其他任何東西那裡得到任何回饋。我必須確保,這總是有效的。如果有必要,我認為我可以自己進行解析。問題只是,如果我必須處理它,或者是否有更簡單的方法。

我注意到devpath我的 USB 埠的屬性是不變的。您可以添加新udev規則並根據設備插入的埠創建特定的符號連結。只需將一個新文件添加到您的/etc/udev/rules.d目錄中,如下所示:

#new symlink for my front USB port:
KERNELS=="2-1.8", SUBSYSTEMS=="usb", ATTRS{devpath}=="1.8", SYMLINK+="usb_port1"

並確保它的名稱以 結尾.rules,例如port1.rules. 從現在開始,您可以使用任何插入該特定埠的設備來創建fstab條目,這些設備將列在. SD卡也一樣,你應該解決。/dev/usb_port1``/dev/

正在發生的事情是我們檢查特定埠(==元件)的獨特屬性,一旦這些匹配添加(+=)一個新的符號連結到/dev/.

您想要匹配的屬性資訊可以通過udevadm info -a /dev/sdb1(for a device sdb1) 檢索。確保您僅從一個父設備塊中獲取屬性,並且應該是具有唯一性devpathKERNELS條目的那個 - 如果可用,請嘗試使用幾個 USB 埠以查看哪些更改。

PS:udev還允許在插入設備時執行腳本 - 可能會為您的備份需求派上用場。但是我不知道引導您的系統是否會被視為插入,因此您必須檢查行為。

引用自:https://unix.stackexchange.com/questions/298118