Mam klucz USB, który będzie używany do codziennego zapisywania danych za pomocą skryptu bash. Udało mi się zamontować go, aby określony użytkownik mógł pisać w nim foldery za pomocą polecenia:
mount /dev/sdc1 /media/usb -o rw,uid=sysop,gid=sysop
Skrypt może uruchamiać i tworzyć katalogi, jak chce i jest idealny. W pewnym momencie klucz USB zostanie odłączony i zastąpiony nowym (tym samym modelem). Czy nowy klucz USB nadal będzie miał nazwę, /dev/sdc1
czy będzie inny?
Jeśli jest inny, jak mogę dołączyć część montażową do mojego skryptu, aby została wykonana automatycznie?
Odpowiedzi:
Chociaż dostęp do niego
/dev/sdXy
jest ryzykowny, dokładniejsza identyfikacja może być wykonana przezUUID
.Ponieważ wspominasz (w pewnym momencie) o zmianie pamięci USB, aby zachować zgodność, możesz chcieć zidentyfikować pamięć USB za pomocą etykiety. Aby to zrobić, możesz:
/dev/disk/by-label/YourLabelHere
.Pamiętaj, że musisz ustawić etykietę na nową pamięć USB przed uruchomieniem skryptu, a także
/dev/disk/by-label
jest dostępna tylko wtedy, gdy (przynajmniej) jedna pamięć USB jest podłączona (w przeciwnym razie zostanie usunięta).Szczegółowe informacje na temat konfiguracji etykiety USB można znaleźć tutaj: /ubuntu/194510/how-to-edit-label-of-usb-drive
źródło
/dev/disk/by-id/
możesz go użyć (to jest to, czego używam w moich systemach plików).W ten sposób rozwiązuję ten problem, ale ogólnie, jak powiedział ci Sato Katsura, musisz napisać regułę udev.
udevadm info --query all /dev/sdc
(lub cokolwiek innego).Skonfiguruj regułę udev, oto przykład mojego portfela. Pola
ID_SERIAL_SHORT
iID_FS_UUID
czytam z informacji w kroku 2:Tutaj ustawiam WŁAŚCICIELA, że mogę go zamontować na moim głównym koncie użytkownika. Również z moim portfelem nie mam partycji, ale montuję zwykłe dyski. Jeśli masz zmiany partycji:
dla partycji 1 w liniach reguł udev.
Zasady udev znajdują się w
/etc/udev/rules.d
, jeśli masz rozsądny system.Teraz możesz
przeładować zasady i
aby monitorować, co dzieje się podczas kroku 5.
Podłącz i podłącz swoje urządzenie USB (oczywiście po wcześniejszym odmontowaniu, jeśli je zamontowałeś). Monitor powinien poinformować Cię o nowym urządzeniu podczas jego inicjalizacji.
Sprawdź, czy
/dev/
zawiera odpowiednie dowiązania symboliczne. W moim przykładzie mam to:Teraz możesz zdefiniować trwałe reguły za pomocą dowiązań symbolicznych
/dev/pocketbook
i/dev/pocketbook-sd
/ lub jakkolwiek masz na imię w polu SYMLINK pliku reguł udev.źródło
Aby dodać do odpowiedzi @ alextartan.
Uruchomiłem własny system tworzenia kopii zapasowych, który wykorzystuje dyski USB jako cele. Muszę się upewnić, co się gdzieś dzieje. Ponieważ identyfikatory UUID nie są szczególnie przyjazne dla użytkownika, polegam na etykietach dysków.
UUID są również nieco problematyczne, ponieważ za każdym razem, gdy formatujesz partycję, otrzymuje ona nowy unikalny UUID, więc wszelkie skrypty używające tego UUID muszą zostać zmodyfikowane. Mogę przypisać tę samą etykietę co poprzednio do sformatowanej partycji (lub nawet do partycji na nowym / zastępczym dysku) i pozostawić moje skrypty w spokoju.
Wymyśliłem własną unikalną (przyjazną dla ludzi) konwencję etykietowania i używam gparted do oznaczania różnych partycji podczas ich tworzenia.
Kiedy moje skrypty muszą uzyskać dostęp do określonej partycji, szukam nazwy urządzenia za pomocą etykiety.
źródło