Open source | Peter Toft
Civilingeniør, ph.d. og algoritme-designer
Smart mount af Linux USB enheder
Af
Peter Toft,
torsdag 21. jan 2010 kl. 00:40
Jeg vil gerne lige dele et smart trick, som jeg har lært at Bryan Østergaard fra SSLUG. Når jeg sidder med en Linux-maskine og indsætter et par USB-diske/memory-sticks så får jeg /dev/sda, /dev/sdb osv i den rækkefølge diskene sættes i. Det er en god strategi, men voldsomt irriterende hvis en af enhederne er en backup harddisk, som SKAL genkendes på samme måde - hver gang.
Tricket består i at man kan mounte USB diske på to måder i /etc/fstab:
/dev/sda1 /storage auto rw,user 0 0
Alternativt kan man mounte disken via dens unikke identifier UUID
UID=7aecd834-db48-4d0d-ba98-8d44d8e21d60 /storage auto rw,user 0 0
Med den sidste notation bliver disken automatisk mountet på "/storage".
Herefter er det oplagte spørgmål. Hvordan finder jeg mit UUID på en given enhed?
Den nemmeste måde er at køre en ls således
$ ls -al /dev/disk/by-*
/dev/disk/by-id:
ata-Hitachi_HTS541660J9AT00_SB0B4DCLH6RAKH -> ../../hda
ata-Hitachi_HTS541660J9AT00_SB0B4DCLH6RAKH-part1 -> ../../hda1
ata-Hitachi_HTS541660J9AT00_SB0B4DCLH6RAKH-part2 -> ../../hda2
ata-Hitachi_HTS541660J9AT00_SB0B4DCLH6RAKH-part5 -> ../../hda5
usb-WD_My_Book_57442D574341534A30323937333830-0:0 -> ../../sda
usb-WD_My_Book_57442D574341534A30323937333830-0:0-part1 -> ../../sda1
/dev/disk/by-path:
pci-0000:00:0f.2-ide-0:0 -> ../../hda
pci-0000:00:0f.2-ide-0:0-part1 -> ../../hda1
pci-0000:00:0f.2-ide-0:0-part2 -> ../../hda2
pci-0000:00:0f.2-ide-0:0-part5 -> ../../hda5
pci-0000:00:0f.5-usb-0:3:1.0-scsi-0:0:0:0 -> ../../sda
pci-0000:00:0f.5-usb-0:3:1.0-scsi-0:0:0:0-part1 -> ../../sda1
/dev/disk/by-uuid:
7aecd834-db48-4d0d-ba98-8d44d8e21d60 -> ../../sda1
a0448746-7976-487b-8bff-bab4aa73420c -> ../../hda1
Jeg har klippet datostempler væk i ovenstående, da det ellers bliver meget bredt.
I mit eksempel ses to diske /dev/hda og /dev/sda - og vi kan edda se 3 under-partitioner på /dev/hda og en enkelt partition på den anden disk /dev/sda1.
Som det kan ses er UUID=7aecd834-db48-4d0d-ba98-8d44d8e21d60 og det passer fint, at den er detekteret som "usb-WD_My_Book". Det er netop en Western Digital backup disk doneret af Fri Software.
/pto
Prøv:
man e2label
Prøv:
man e2label
Som Christian siger kan label bruges til mount. e2label og mformat kan begge give labels til hvert deres filsystem og mount -L kan bruge disse.
Mon ikke det kan kombineres med automount?
Som Christian siger kan label bruges til mount. e2label og mformat kan begge give labels til hvert deres filsystem og mount -L kan bruge disse.
Mon ikke det kan kombineres med automount?
Hvis man er lidt af en nørd, kan man også oprette en regel under /lib/udev/rules.d (eller hvor de nu ligger for den pågældende Linux-distribution), som kalder et script. Ved indsættelse af USB-disken mountes den, og script'et kan sikre, at der automatisk køres backup.
Hvis man er lidt af en nørd, kan man også oprette en regel under /lib/udev/rules.d (eller hvor de nu ligger for den pågældende Linux-distribution), som kalder et script. Ved indsættelse af USB-disken mountes den, og script'et kan sikre, at der automatisk køres backup.
Jeg benytter mig af et par scripts fra denne side
http://andri.dk/en/tech/linux/usb-b...
Der noterer man VolID ned og hver gang systemet ser det volID bliver disken mounted i den samme mappe og systemet starter en rdiff baseret backup.
Hilsen Carsten L
Jeg benytter mig af et par scripts fra denne side http://andri.dk/en/tech/linux/usb-backup
Der noterer man VolID ned og hver gang systemet ser det volID bliver disken mounted i den samme mappe og systemet starter en rdiff baseret backup.
Hilsen Carsten L
Hvis nu man ikke vil bruge UUID, men have en fælles betegnelse for en række diske man skifter ud (daglig backup på 5 forskellige diske, en til hver dag - give and take, fordi folk nogen gange glemmer at skifte dem ud, så at give diske ugedag som label duttter ikke), hvad så?
Altså i praksis en USB disk der bruges til daglig backup, men som udskiftes - i dag sidder den som sdb, uagtet hvilken en det er, men det er jo bøvlet hvis man skal til at mounte disken efter et unikt navn.
Endvidere er det irriterende at den primære disk, som systemet fint booter fra, bliver til sdb, og usb disken til sda hvis usb disken sidder i under boot - så hvordan tvinger man den primære disk til altid at være sda?
/Christian
Hvis nu man ikke vil bruge UUID, men have en fælles betegnelse for en række diske man skifter ud (daglig backup på 5 forskellige diske, en til hver dag - give and take, fordi folk nogen gange glemmer at skifte dem ud, så at give diske ugedag som label duttter ikke), hvad så?
Altså i praksis en USB disk der bruges til daglig backup, men som udskiftes - i dag sidder den som sdb, uagtet hvilken en det er, men det er jo bøvlet hvis man skal til at mounte disken efter et unikt navn.
Endvidere er det irriterende at den primære disk, som systemet fint booter fra, bliver til sdb, og usb disken til sda hvis usb disken sidder i under boot - så hvordan tvinger man den primære disk til altid at være sda?
/Christian
Endvidere er det irriterende at den primære disk, som systemet fint booter fra, bliver til sdb, og usb disken til sda hvis usb disken sidder i under boot - så hvordan tvinger man den primære disk til altid at være sda?
Hav USB som et modul du først loader efter du har loadet driveren til den interne disk controller?
Hvis nu man ikke vil bruge UUID, men have en fælles betegnelse for en række diske man skifter ud (daglig backup på 5 forskellige diske, en til hver dag - give and take, fordi folk nogen gange glemmer at skifte dem ud, så at give diske ugedag som label duttter ikke), hvad så?
Hvorfor vil du det?
[quote]Endvidere er det irriterende at den primære disk, som systemet fint booter fra, bliver til sdb, og usb disken til sda hvis usb disken sidder i under boot - så hvordan tvinger man den primære disk til altid at være sda?[/quote]
Hav USB som et modul du først loader efter du har loadet driveren til den interne disk controller?
[quote]Hvis nu man ikke vil bruge UUID, men have en fælles betegnelse for en række diske man skifter ud (daglig backup på 5 forskellige diske, en til hver dag - give and take, fordi folk nogen gange glemmer at skifte dem ud, så at give diske ugedag som label duttter ikke), hvad så?[/quote]
Hvorfor vil du det?
Christian: Hvis du ikke har for mange diske, så kan du måske lave en "dum" løsning i dit script, der finder den rigtige sti a la:
if [[ -d "/media/usb/backup2" && ! -L "/media/usb/backup2" ]]; then
EXTBACKUPDIR="/media/usb/backup2"
fi
if [[ -d "/media/usb/backup1" && ! -L "/media/usb/backup1" ]]; then
EXTBACKUPDIR="/media/usb/backup1"
fi
if [ "$EXTBACKUPDIR" != "" ]; then
osv.
Christian: Hvis du ikke har for mange diske, så kan du måske lave en "dum" løsning i dit script, der finder den rigtige sti a la:
if [[ -d "/media/usb/backup2" && ! -L "/media/usb/backup2" ]]; then
EXTBACKUPDIR="/media/usb/backup2"
fi
if [[ -d "/media/usb/backup1" && ! -L "/media/usb/backup1" ]]; then
EXTBACKUPDIR="/media/usb/backup1"
fi
if [ "$EXTBACKUPDIR" != "" ]; then
osv.
Brug blkid(8) til at finde UUID:
# blkid
/dev/sda1: UUID="3f069237-9e20-4f6e-8de8-bd00c2bd3371" TYPE="ext3"
/dev/sda2: UUID="483ba61c-202d-4f04-aa98-0f20634535f9" TYPE="xfs"
Brug blkid(8) til at finde UUID:
# blkid
/dev/sda1: UUID="3f069237-9e20-4f6e-8de8-bd00c2bd3371" TYPE="ext3"
/dev/sda2: UUID="483ba61c-202d-4f04-aa98-0f20634535f9" TYPE="xfs"
Hav USB som et modul du først loader efter du har loadet driveren til den interne disk controller?
Nu skal jeg jo selvfølgelig være besværlig, så hvis nu jeg har to usb diske tilsluttet, så er deres rækkefølge heller ikke underodnet.
Hvorfor vil du det?
Nu svarede du et spørgsmål med et spørgsmål, så jeg tabte lige tråden der.
/Christian
[quote]Hav USB som et modul du først loader efter du har loadet driveren til den interne disk controller?[/quote]Nu skal jeg jo selvfølgelig være besværlig, så hvis nu jeg har to usb diske tilsluttet, så er deres rækkefølge heller ikke underodnet.
[quote]Hvorfor vil du det?[/quote]Nu svarede du et spørgsmål med et spørgsmål, så jeg tabte lige tråden der.
/Christian
Nu skal jeg jo selvfølgelig være besværlig, så hvis nu jeg har to usb diske tilsluttet, så er deres rækkefølge heller ikke underodnet.
Typisk ;-)
Det med rækkefølgen af USB diske bliver vel lige gyldigt hvis du bruger LABEL eller UUID. Måske også hvis du bruger /dev/disk-by-id, eller disk-by-path.
Nu svarede du et spørgsmål med et spørgsmål, så jeg tabte lige tråden der.
Hvorfor vil du ikke bruge UUID til at styre hvilken backup der skal tages?
[quote]Nu skal jeg jo selvfølgelig være besværlig, så hvis nu jeg har to usb diske tilsluttet, så er deres rækkefølge heller ikke underodnet.[/quote]
Typisk ;-)
Det med rækkefølgen af USB diske bliver vel lige gyldigt hvis du bruger LABEL eller UUID. Måske også hvis du bruger /dev/disk-by-id, eller disk-by-path.
[quote]Nu svarede du et spørgsmål med et spørgsmål, så jeg tabte lige tråden der.[/quote]
Hvorfor vil du ikke bruge UUID til at styre hvilken backup der skal tages?
Den letteste metode er den, der blev foreslået ovenfor: Giv hver disk en label.
Under Fedora bliver disken så automatisk mounted i et directory med samme navn som den label der er på disken, jeg ved ikke, hvordan andre distributioner opfører sig.
Hvis dine 5 diske skal mountes samme sted, så giv dem samme label...
Den letteste metode er den, der blev foreslået ovenfor: Giv hver disk en label.
Under Fedora bliver disken så automatisk mounted i et directory med samme navn som den label der er på disken, jeg ved ikke, hvordan andre distributioner opfører sig.
Hvis dine 5 diske skal mountes samme sted, så giv dem samme label...
@Lars
Jep, det ser ud til at være metoden.
Mine roterbare diske har så allesammen labelen backupdisk og min ekstradisk kan vi så kalde ekstradisk.
Det fungerer så fint med:
mount -L backupdisk /mnt/backup
mount -L ekstradisk /mnt/ekstra
/Christian
@Lars
Jep, det ser ud til at være metoden.
Mine roterbare diske har så allesammen labelen backupdisk og min ekstradisk kan vi så kalde ekstradisk.
Det fungerer så fint med:
mount -L backupdisk /mnt/backup
mount -L ekstradisk /mnt/ekstra
/Christian
Det med rækkefølgen af USB diske bliver vel lige gyldigt hvis du bruger LABEL eller UUID. Måske også hvis du bruger /dev/disk-by-id, eller disk-by-path.
Ja du har ret, sålænge serveren selv kan holde styr på om hoveddisken er sda eller sdb/sdc, så er jeg sådan set ligeglad.
Så metoden med label ser ud til at være holdbar.
Et simpelt problem, med en simpel løsning, hvor det at formulere spørgsmålet, så man kan få et forståeligt svar kan være tricky.
Tak for hjælpen
/Christian
[quote]Det med rækkefølgen af USB diske bliver vel lige gyldigt hvis du bruger LABEL eller UUID. Måske også hvis du bruger /dev/disk-by-id, eller disk-by-path.[/quote] Ja du har ret, sålænge serveren selv kan holde styr på om hoveddisken er sda eller sdb/sdc, så er jeg sådan set ligeglad.
Så metoden med label ser ud til at være holdbar.
Et simpelt problem, med en simpel løsning, hvor det at formulere spørgsmålet, så man kan få et forståeligt svar kan være tricky.
Tak for hjælpen
/Christian
Glimrende indspark hele vejen rundt. Mange tak
Glimrende indspark hele vejen rundt. Mange tak
Jeg har skiftet Ubuntu/Gnome ud med Arch/Fluxbox. Det betyder bl.a. at USB-enheder ikke automatisk bliver genkendt mere.
I stedet bruger jeg pmount / pumount, der er wrappers til mount / umount.
Jeg er stadig nødt til selv at holde øje med hvilken /dev/sdX disken sidder på (dmesg), men ellers er det blot at skrive f.eks.
pmount /dev/sdb2 ipod
så dukker disken op under /media (i eksemplet under /media/ipod).
Man skal ikke selv oprette mount points eller rette i fstab. Og når disken skal ud igen:
pumount ipod
Det passer meget godt til mit behov/temperament, og så skal man ikke være root for at kører kommandoerne (dvs. der er et lille suid-sikkerheds-problem).
Man kan også automatisere dette med udev, se f.eks.
http://www.monperrus.net/martin/aut...
Dette har jeg dog ikke prøvet.
Jeg har skiftet Ubuntu/Gnome ud med Arch/Fluxbox. Det betyder bl.a. at USB-enheder ikke automatisk bliver genkendt mere.
I stedet bruger jeg pmount / pumount, der er wrappers til mount / umount.
Jeg er stadig nødt til selv at holde øje med hvilken /dev/sdX disken sidder på (dmesg), men ellers er det blot at skrive f.eks.
pmount /dev/sdb2 ipod
så dukker disken op under /media (i eksemplet under /media/ipod).
Man skal ikke selv oprette mount points eller rette i fstab. Og når disken skal ud igen:
pumount ipod
Det passer meget godt til mit behov/temperament, og så skal man ikke være root for at kører kommandoerne (dvs. der er et lille suid-sikkerheds-problem).
Man kan også automatisere dette med udev, se f.eks.
http://www.monperrus.net/martin/automounting+usb+flash+drives+on+linux+with+udev+and+pmount
Dette har jeg dog ikke prøvet.

Liver lige denne tråd op igen, i håb om der er nogen der kan komme med et smart input.
Scenarie:
Jeg har to maskiner, personlig og server.
På den personlige maskine hedder min bruger cn og har gruppen cn (out of the box).
På serveren oprettes brugeren også som cn:cn, men her har jeg så tilknyttet brugeren til en til gruppe, lad os kalde den adm.
Hvis jeg er logget ind på en terminal på serveren og laver newgrp adm, så vil mine filer blive gemt som cn:adm - hvilket betyder at andre medlemmer af adm kan læse dem.
Det svarer til den måde man kan få Samba til at opføre sig.
Nu er problemet bare at jeg ville gerne lave sshfs mount af min server på min personlige maskine, men sådan at mine filer kan deles med adm gruppen.
Uagtet hvad jeg prøver, så er det sådan at de filer jeg laver på sshfs mountet altid gemmes med cn:cn på serveren, og dermed ikke kan tilgås af andre i gruppen adm.
Og det gør ikke nogen forskel at lege med uid og gid, det påvirker som jeg kan se det kun den personlige maskine.
Så forslag modtages med kyshånd.
/Christian
Liver lige denne tråd op igen, i håb om der er nogen der kan komme med et smart input.
Scenarie:
Jeg har to maskiner, personlig og server.
På den personlige maskine hedder min bruger cn og har gruppen cn (out of the box).
På serveren oprettes brugeren også som cn:cn, men her har jeg så tilknyttet brugeren til en til gruppe, lad os kalde den adm.
Hvis jeg er logget ind på en terminal på serveren og laver newgrp adm, så vil mine filer blive gemt som cn:adm - hvilket betyder at andre medlemmer af adm kan læse dem.
Det svarer til den måde man kan få Samba til at opføre sig.
Nu er problemet bare at jeg ville gerne lave sshfs mount af min server på min personlige maskine, men sådan at mine filer kan deles med adm gruppen.
Uagtet hvad jeg prøver, så er det sådan at de filer jeg laver på sshfs mountet altid gemmes med cn:cn på serveren, og dermed ikke kan tilgås af andre i gruppen adm.
Og det gør ikke nogen forskel at lege med uid og gid, det påvirker som jeg kan se det kun den personlige maskine.
Så forslag modtages med kyshånd.
/Christian