Automatyzacja sekwencji poleceń montowania

9

Kiedy podłączam urządzenie (tablet, aparat, pamięć flash, zewnętrzny dysk twardy) do mojego laptopa z Linuksem, często wpisuję następującą sekwencję poleceń.

$ ls /dev/sd*
Powiedzmy, że moje urządzenie jest / dev / sdc
opcjonalne $ sudo mkdir /media/my_flash
opcjonalne$ sudo chmod 777 /media/my_flash
$ sudo mount /dev/sdc /media/my_flash

Następnie skopiuję niektóre pliki i

$ sudo umount /dev/sdc

Ta sekwencja gwarantuje, że pliki zostaną skopiowane i nic złego się nie stanie.

Czy możesz mi powiedzieć, jak zautomatyzować tę sekwencję poleceń? Więc podłączę tylko urządzenie, rozpozna, do którego katalogu powinien zostać podłączony, a następnie dokonam transferu plików, a następnie zasygnalizuje mi (w jakiś sposób), że mogę odłączyć urządzenie? Czy w tym systemie operacyjnym są jakieś ustawienia?

xralf
źródło

Odpowiedzi:

6

Składnikiem systemu, który reaguje na połączenie urządzenia wymiennego, jest Udev , jak wspomniano w SHW . Nawet samouczek udev może być nieco zniechęcający; Pokażę ci kilka przykładów.

Istnieją dwa etapy: skojarzenie pliku urządzenia (np. /dev/sdc) Z urządzeniem sprzętowym i zamontowanie urządzenia w celu uzyskania dostępu do systemu plików. Zadanie Udev jest pierwszym krokiem, chociaż możesz mu powiedzieć, aby uruchomił zewnętrzne polecenie, takie jak mount.

W przypadku znanych urządzeń wymiennych lubię używać dedykowanej nazwy urządzenia pod /dev/removable(ta nazwa katalogu to osobista konwencja). Następujące reguły udev (do umieszczenia /etc/udev/rules.d/my_removable_disks.rules) tworzą dowiązania symboliczne o znanych nazwach dla dwóch dysków, z których oba są identyfikowane przez właściwość systemu plików na ich partycji 1:

KERNEL=="sd?", PROGRAM=="/sbin/blkid -o value -s UUID %N1", RESULT=="1234-5678", SYMLINK+="removable/foo"
KERNEL=="sd?", PROGRAM=="/sbin/blkid -o value -s LABEL %N1", RESULT=="Joe's disk", SYMLINK+="removable/joe"

Starsze wersje udev mogą wymagać /udev/lib/vol_id -u %N1(dla UUID, -ldla etykiety) zamiast blkidwywołania. Jest więcej rzeczy, które możesz dopasować, np. ATTRS{vendor}=="Yoyodine", ATTRS{serial}=="XYZZY12345PDQ97"(Zamiast PROGRAM==…, RESULT==…), aby dopasować dostawcę urządzenia i numer seryjny.

Następnie możesz użyć takiej linii w /etc/fstab:

/dev/removable/joe  /media/joe  vfat  noauto,user

Jeśli wolisz automatyczne montowanie, możesz dodać coś podobnego , RUN="mkdir /media/foo && mount /dev/removable/foo /media/foo"do linii udev. Nie zapomnij o tym umount /media/fooprzed odłączeniem.

Gilles „SO- przestań być zły”
źródło
Dzięki za świetne rozwiązanie. Mam LVM na niektórych dyskach zewnętrznych, więc dłuższa sekwencja poleceń (w tym aktywacja VG itp.), Teraz mogę nawet dodać do tego skrypty zapasowe :).
Grzegorz Wierzowiecki,
Drogi Czytelniku - jeśli chcesz wiedzieć o dostępnych ATTRS, wypróbuj to na swoim urządzeniu:udevadm info --name=/dev/DEVICE --attribute-walk
Grzegorz Wierzowiecki
8

Możesz to zrobić, pisząc reguły UDEV, które „uruchomią” skrypt bash zawierający te same polecenia bash, o których wspomniałeś. Ilekroć podłączysz te urządzenia, UDEV rozpozna to i zacznie się zachowywać zgodnie z regułą.

Do pisania reguł możesz użyć tego linku.

SHW
źródło
OOH nieźle. Jeszcze tego nie wiedziałem - dodanie zakładki do linku i dodanie go do mojego repertuaru.
Shadur
Czy mógłbyś być bardziej szczegółowy? Które akapity linku są dla mnie istotne?
xralf
Wygląda na to, czego szukam. Nie mam tylko czasu, żeby je czytać przez te wszystkie dni. Przestudiuję go i wkleję właściwą odpowiedź do twojego komentarza w czasie, gdy ją zrozumiem. Dzięki
xralf
4

Obecnie istnieje kilka demonów z automatycznym montażem, a także pmountpolecenie, które ma na celu umożliwienie użytkownikom montowania urządzeń wymiennych /mediabez konieczności sudodostępu.

Zarówno Gnome, jak i KDE mają opcję automatycznego montowania woluminów wymiennych po ich podłączeniu; w zależności od zainstalowanej dystrybucji ta funkcja może nawet domyślnie być włączona.

W GNOME opcje rządzące tą funkcją są dostępne pod System -> Preferences -> Removable Media; Nie mam doświadczenia z KDE.

Shadur
źródło
Chciałbym to zrobić niezależnie w środowisku zarządzania oknami (np. KDE, GNOME itp.) (Jakby X nie został uruchomiony).
xralf
Następnie musisz przeczytać ten link opublikowany przez SHW i przeczytać prawie wszystko.
Shadur