Dette indlæg er alene udtryk for skribentens egen holdning.

Smart mount af Linux USB enheder

21. januar 2010 kl. 00:4014
Artiklen er ældre end 30 dage

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:

  1. <pre>
  2. /dev/sda1 /storage auto rw,user 0 0
  3. </pre>

Alternativt kan man mounte disken via dens unikke identifier UUID

  1. <pre>
  2. UID=7aecd834-db48-4d0d-ba98-8d44d8e21d60 /storage auto rw,user 0 0
  3. </pre>

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?

Artiklen fortsætter efter annoncen

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](https://frisoftware.dk).

/pto

14 kommentarer.  Hop til debatten
Denne artikel er gratis...

...men det er dyrt at lave god journalistik. Derfor beder vi dig overveje at tegne abonnement på Version2.

Digitaliseringen buldrer derudaf, og it-folkene tegner fremtidens Danmark. Derfor er det vigtigere end nogensinde med et kvalificeret bud på, hvordan it bedst kan være med til at udvikle det danske samfund og erhvervsliv.

Og der har aldrig været mere akut brug for en kritisk vagthund, der råber op, når der tages forkerte it-beslutninger.

Den rolle har Version2 indtaget siden 2006 - og det bliver vi ved med.

Debatten
Log ind eller opret en bruger for at deltage i debatten.
settingsDebatindstillinger
3
21. januar 2010 kl. 08:43

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.

4
21. januar 2010 kl. 08:56

Jeg benytter mig af et par scripts fra denne side https://andri.dk/en/tech/linux/usb-backupDer 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

5
21. januar 2010 kl. 09:19

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

7
21. januar 2010 kl. 12:01

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.

8
21. januar 2010 kl. 12:46

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"

9
21. januar 2010 kl. 13:56

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

13
21. januar 2010 kl. 15:31

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

14
21. januar 2010 kl. 20:30

Glimrende indspark hele vejen rundt. Mange tak

15
21. januar 2010 kl. 20:55

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.

https://www.monperrus.net/martin/automounting+usb+flash+drives+on+linux+with+udev+and+pmount

Dette har jeg dog ikke prøvet.

16
4. marts 2010 kl. 12:10

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

11
21. januar 2010 kl. 14:12

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...

12
21. januar 2010 kl. 15:28

@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

2
21. januar 2010 kl. 08:43

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?