簡體   English   中英

如何枚舉連接的USB存儲設備Ubuntu Java

[英]How to enumerate connected USB storage devices Ubuntu Java

我有一個應用程序,主要是Java語言的應用程序,它通過網頁GUI(由Ubuntu計算機提供)來控制機載紅外攝像機,該GUI在計算機加電並在啟動結束時自動運行。 該應用程序以用戶而不是root身份運行,即使該用戶未登錄也是如此。

收集了大量圖像后,需要使用rsync將數據存檔到操作員的USB驅動器上的文件夾中。 我需要安裝USB驅動器並知道其名稱標簽。 計算機是無頭的,在任何情況下都不能指望飛機上的操作員知道Linux。

在Ubuntu上,我看到已登錄並正在運行xfce4 GUI,只有在那時,驅動器才會在/ media / user-name / drive-tag中列出(我注意到/ media / username由root擁有,但文件夾名為該驅動器歸用戶所有。)並顯示在/ etc / mtab中:

/dev/sdd1 /media/programmer/DATA-02-2TB vfat rw,nosuid,nodev,uid=1001,gid=1001,shortname=mixed,dmask=0077,utf8=1,showexec,flush,uhelper=udisks2 0 0

如何通過Java或Java與bash的組合來檢測和安裝USB存儲設備?

如果不可能,我是否需要通過GUI要求用戶輸入設備標簽或名稱,例如“ DATA-02-2TB”,然后創建安裝點並通過腳本使用信息安裝USB驅動器以上?

首先安裝usbmount,一個Ubuntu工具。

sudo apt-get update
sudo apt-get install usbmount

然后編輯/etc/usbmount/usbmount.conf文件:

sudo sed -i 's/MOUNTOPTIONS="/MOUNTOPTIONS="user,umask=000,/' /etc/usbmount/usbmount.conf

Serverfault中描述了這些步驟。 請注意,僅支持一部分驅動器格式,包括無處不在的VFAT。

這樣,USB外部驅動器和拇指驅動器將通過/ media / usb7以/ media / usb0的形式安裝在/ media中,並列在/ etc / mtab中。

/dev/sdc1 /media/usb0 vfat rw,noexec,nosuid,nodev,sync,noatime,nodiratime,umask=000 0 0

我已經在14.04機器上對此進行了測試。 現在,如果我只能得到驅動器標簽。

編輯: 同步選項不適用於閃存驅動器。 閱讀/etc/usbmount/usbmount.conf文件以獲取詳細信息,並從該文件中相應的行中刪除“ sync”。 在取消同步之前,使用同步選項進行的完整備份運行了一個多小時,但刪除同步后僅花費了大約5分鍾。 請注意有關使用pumount卸載非同步驅動器的注釋。

public static ArrayList<String> usbDriveList() throws FileNotFoundException {

    final String MTB_ADDRESS = "/etc/mtab";
    final String TARGET = "^/media/usb[0-7]$"; // REGEX

    final File file = new File(MTB_ADDRESS);
    final ArrayList<String> driveList = new ArrayList<String>();

    try (Scanner in = new Scanner(file)) {
        while (in.hasNext()) {
            final String[] splitLine = in.nextLine().split(" ");
            if (splitLine[1].matches(TARGET)) {
                driveList.add(splitLine[1]); // got it!
            }
        }
    } catch (final FileNotFoundException e) {
        throw new FileNotFoundException();
    }

    return driveList;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM