%20en%20Linux%20(Debian).png)
Quiero hacer una copia de seguridad de la tabla de particiones de un disco en un script como este:
sfdisk --dump /dev/sda > partition_table.dump
Pero
No quiero usarlo
/dev/sda
porque puede que no sea confiable./dev/disk/by-id
parece tambiénno ser confiable./dev/disk/by-uuid
edf
incluir solo particiones (no discos).
Sin embargo, fdisk -l
muestra un UUID de "Identificador de disco". ¿Puedo de alguna manera obtener el nombre del disco ( sda
) del identificador del disco? ¿O hay otra forma de identificar un disco de forma fiable?
Respuesta1
Úselo /dev/disk/by-id/
de todos modos.El problema al que vinculasMe parece un mal funcionamiento poco común del hardware o algo similar.
Comparar
ls -l /dev/disk/by-id/
a
# 'lsblk' is from 'util-linux' package
lsblk -pdo NAME,VENDOR,MODEL,SERIAL,WWN
Sin embargo, en algunos de mis sistemas el comando anterior muestra valores en blanco; Aún puedes intentar:
# 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
no se mucho sobreWWNpero los números de serie deben estar codificados en el hardware. Lo que quiero decir es que si algún número de serie cambia por cualquier motivo, es posible que tenga problemas mayores que un script de respaldo que de repente no funciona.
Tenga en cuenta que un número de serie identifica un dispositivo físico sin importar cuál sea su tabla de particiones (o si existe alguna, estudie el término "superfloppy" yesta pregunta). Si desea identificar las tablas de particiones, estos UUID de "Identificador de disco" que descubrió serán el enfoque correcto (tenga en cuenta que son UUID de 128 bits en el esquema GPT pero firmas opcionales de 32 bits en MBR).ejemplo aquí). Son sólo unos pocos bytes en el disco que se pueden cambiar, clonar y realizar copias de seguridad. No he encontrado ninguna forma rápida de identificar un nodo de dispositivo mediante este tipo de identificador, aparte de navegar por los dispositivos disponibles:
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
[...] incluir sólo particiones (no discos).
Bueno, puede que ni siquiera los incluya a todos porque estos UUID se refieren a estructuras dentro de las particiones (como sistemas de archivos o swap), no a las particiones en sí (y si trata con un superfloppy, estará aquí como un disco completo). Cada uno de estos UUID está escrito en algún lugar dentro de su partición correspondiente (o dispositivo, si es superfloppy). Estos son identificadores que ves cuando invocas, por ejemplo
# 'file' is from 'file' package
file -s /dev/sda2
Si necesita identificadores de particiones, están en formato /dev/disk/by-partuuid/
. Estos son los mismos que en
# 'partx' is from 'util-linux' package
partx --show /dev/sda
y se almacenan en una tabla de particiones correspondiente, no dentro de ninguna partición. Puede obtener una imagen más amplia ejecutando
# 'blkid' (from 'util-linux' package) probably needs 'sudo'
blkid
Para identificar un dispositivo que contiene una partición con un UUID determinado, intente:
id=68e3b991-5c7a-4d18-a120-834ef4effe00
readlink -e "/dev/disk/by-partuuid/$id" | sed 's/[0-9]*$//'
( sed
Aquí simplemente elimina los dígitos finales). Esta solución se puede adaptar fácilmente para recuperar información /dev/disk/by-uuid/
si es necesario.