identifica o disco rígido antes da montagem

1

Eu recentemente fiz 2 scripts que cuidam da montagem e desmontagem de um disco rígido no linux. O que eu não consegui descobrir é o seguinte. No momento, estou montando /dev/sdc1 to /home/media/externalHardDrive . O problema é que, quando insiro outro dispositivo usb (como o usb stick) enquanto o disco rígido não está sendo inserido, ele provavelmente colocará o usb-stick em /dev/sdc1 . Gostaria de aprender uma maneira de identificar o dispositivo antes de montá-lo, para garantir que apenas o disco rígido seja afetado por esse script.

Estes são meus scripts: unmount_script.sh:

#!/bin/bash

MOUNT="/home/media/externalHardDrive"

if grep -qs "$MOUNT" /proc/mounts; then
  umount "$MOUNT"
  if [ $? -eq 0 ]; then
    echo "HardDrive kan veilig worden verwijderd :D"
  else
    echo "Er is iets mis gegaan, blijf overal vanaf :("
  fi
else
  echo "Er is geen HardDrive gemount op $MOUNT, deze kan daarom niet verwijderd worden!"
fi

mount_script.sh

#!/bin/bash

MOUNT="/home/media/externalHardDrive"

if grep -qs "$MOUNT" /proc/mounts; then
  echo "HardDrive is al gemount op $MOUNT ;)"
else
  mount /dev/sdc1 "$MOUNT"
  if [ $? -eq 0 ]; then
    echo "HardDrive is succesvol gemount :D"
  fi
fi

Alguém pode me apontar na direção certa? Estou executando esses scripts em um servidor Debian.

    
por Sander Koenders 07.11.2014 / 09:22

2 respostas

2

Em um momento em que você sabe que sua unidade USB está em /dev/sdc0 , faça o seguinte:

ls -l /dev/disk/by-uuid | grep -F /dev/sdc1

e observe o número entre o horário (HH: MM) e o -> , vamos assumir seu xyz . Esse xyz é as unidades que o UUID normalmente não altera (a menos que você crie um novo sistema de arquivos e não forneça esse número novamente como uma opção).

Você pode usar esse UUID para montar em vez do dispositivo ao montar:

mount UUID=xyz /home/media

ou insira que UUID=xyz na primeira coluna de uma entrada /etc/fstab , então você pode fazer apenas mount /home/media .

Como alternativa, você pode atribuir um rótulo a um sistema de arquivos (por exemplo, usando a opção -L para mkfs.ext4 ou mkfs.btrfs e use LABEL=thelabelyouspecified de maneira semelhante.

    
por 07.11.2014 / 09:42
2

Use udev para montar os discos rígidos. Isso automatizará a tarefa e tornará a identificação muito mais fácil. Se o dispositivo conectado for um disco rígido, haverá uma variável $ID_ATA=1 em seu script.

    
por 07.11.2014 / 09:42