Distinguir automaticamente a diferença entre vários HDDs no Linux?

1

Estou executando o Ubuntu Server 9.10. Eu tenho dois HDDs externos USB. Eu os uso cada um por diferentes razões de backup. Portanto, certos dados são armazenados em um disco rígido e informações diferentes são armazenadas no outro disco rígido.

Eu quero criar um script que possa examinar o HDD externo e determinar qual é o HDD, para que ele possa copiar as informações apropriadas. Existe uma maneira de o Linux determinar isso? Como se eu vir um HDD como / dev / sdc1, desconecte-o e conecte o outro HDD, o Linux deve vê-lo como / dev / sdd1 ou será / dev / sdc1?

Sou um pouco iniciante no Linux e não entendo como ele determina os valores / dev / sdxx que atribui às unidades.

Jake Wilson
fonte

Respostas:

6

A identificação do dispositivo de armazenamento pode ser realizada usando UUIDo dispositivo. A identificação baseada em / dev / sd * não é confiável.

No ubuntu 9.10, você pode usar blkidpara listar os dispositivos UUIDe pode usar este comando em um script para identificar corretamente um disco rígido específico, uma vez que UUIDsão atribuídos exclusivamente a um disco rígido específico .

Você pode encontrar mais informações aqui , mas observe que o comando vol_idnão está disponível desde o Ubuntu 9.10.

mrucci
fonte
pessoalmente, eu usaria rótulos de volume em vez de UUIDs (prefiro legível por humanos a exclusivos garantidos), mas se vol_idnão estiver disponível, não tenho certeza do que mais usar. Certamente, o udev / DeviceKit fornece alguma ferramenta para fazer isso, mas não estou achando isso ATM. se tudo mais falhar, tune2fs -l /dev/sdXN | grep volumeconseguiria.
quack quixote
blkid -s label /dev/sdXNdeve fazer o trabalho. O único problema que vejo ao usar rótulos é que não há programa de linha de comando para definir rótulos para os diferentes tipos de sistema de arquivos. Veja help.ubuntu.com/community/RenameUSBDrive#Command%20line
mrucci
quase: blkid -s LABEL /dev/sdXN(as tags diferenciam maiúsculas de minúsculas). seu argumento sobre defini-los está errado - existem programas de linha de comando para definir rótulos, mas cada sistema de arquivos precisa de um programa diferente, o que pode ser um problema. mas geralmente defino rótulos ao formatar; Eu raramente preciso ajustá-los mais tarde.
quack quixote
1

Isso pode ser considerado uma solução alternativa e não uma resposta direta à sua pergunta, mas minha abordagem para esse problema é criar um arquivo diferente em cada disco rígido.

Como tenho vários HDDs externos, uso-os touchpara criar um arquivo de zero byte, como 'Música' em um ou 'Vídeos' em outro, e meu script de backup pode detectar o que gravar nele.

Eu não espero que você obtenha uma resposta definitiva à sua pergunta. Eu estarei interessado em vê-lo.

pavium
fonte
1

Apenas respondendo à minha própria pergunta para referência futura de outra pessoa ...

Eu descobri que um bom método para distinguir entre dispositivos é apenas dar rótulos a eles usando e2label.

Além disso, eu posso distinguir entre dispositivos aqui

/dev/disk/by-label/

e

/dev/disk/by-uuid
Jake Wilson
fonte