Use /dev/disk/by-id/
de qualquer maneira. O problema com o qual você faz o link parece-me um raro defeito no hardware ou algo igualmente ruim.
Compare
ls -l /dev/disk/by-id/
para
# 'lsblk' is from 'util-linux' package
lsblk -pdo NAME,VENDOR,MODEL,SERIAL,WWN
No entanto, em alguns dos meus sistemas, o comando acima exibe valores em branco; você ainda pode tentar:
# the below 'smartctl' command (from 'smartmontools' package) probably needs 'sudo'
for sd in $(lsblk -pdo NAME | tail -n +2); do
printf "%s\n" "$sd"; smartctl -i "$sd" |
grep -E "Model:|Number:|WWN"
done
Não sei muito sobre o WWN , mas os números de série devem ser codificados no hardware. Meu ponto é, se qualquer número de série mudar por qualquer motivo, então você pode ter problemas maiores do que um script de backup que de repente não funciona.
Observe que um número de série identifica um dispositivo físico não importando qual seja sua tabela de partição (ou, se houver um, analise o termo "superfloppy" e esta questão ). Se você quiser identificar as próprias tabelas de partição, esses UUIDs "Identificador de Disco" serão a abordagem correta (observe que são UUIDs de 128 bits no esquema GPT, mas assinaturas opcionais de 32 bits em MBR, exemplo aqui ). Eles são apenas alguns bytes no disco que podem ser alterados, clonados, copiados. Não encontrei nenhuma maneira rápida de identificar um nó de dispositivo por esse tipo de identificador, além de navegar pelos dispositivos disponíveis:
id=8080fdb4-6905-4f34-91fa-61389615d7d3
# the below 'fdisk' command (from 'util-linux' package) probably needs 'sudo'
for sd in $(lsblk -pdo NAME | tail -n +2); do
fdisk -l "$sd" | grep -qi " ${id}$" && printf "%s\n" "$sd"
done
/dev/disk/by-uuid
[...] include partitions only (not disks).
Bem, isso pode incluir nem todos eles porque esses UUIDs se referem a estruturas dentro de partições (como sistemas de arquivos ou swap), não a partições em si (e se você lidar com o superfloppy, ele estará aqui como um disco inteiro). Cada um desses UUIDs é escrito em algum lugar dentro de sua partição correspondente (ou dispositivo, se for superfloppy). Estes são identificadores que você vê quando invoca, por exemplo,
# 'file' is from 'file' package
file -s /dev/sda2
Se você precisar de identificadores de partições, eles estarão em /dev/disk/by-partuuid/
. Estes são os mesmos que em
# 'partx' is from 'util-linux' package
partx --show /dev/sda
e eles são armazenados em uma tabela de partição correspondente, não dentro de qualquer partição. Você pode obter uma imagem mais ampla executando
# 'blkid' (from 'util-linux' package) probably needs 'sudo'
blkid
Para identificar um dispositivo que contém uma partição com um determinado UUID, tente:
id=68e3b991-5c7a-4d18-a120-834ef4effe00
readlink -e "/dev/disk/by-partuuid/$id" | sed 's/[0-9]*$//'
( sed
apenas retira dígitos finais aqui). Esta solução pode ser facilmente adaptada para recuperar informações de /dev/disk/by-uuid/
se você precisar.