Ya, pero no me he explicado con claridad, por lo que se ve.
Supongamos un disco sda con dos particiones: sda1 y sda2.
lsblk devolverá algo como
sda
|- sda1
|- sda2
Y un pendrive en sdb:
sda 15,6 GiB
|- sda1 1,6 GiB
|- sda2 14 GiB
sdb
|- sdb1 32 GiB
Hasta aquí fácil. En tu caso en lugar de sda es nvme0n1. Pero para el ejemplo es más fácil de escribir
sda contiene tanto sus propias particiones como el contenido de las mismas. Puedes pensar en sda como un fichero que contienen varios ficheros (uno de ellos, su lista de particiones, y un fichero para cada partición) y los ficheros que son cada partición contienen los ficheros que contenga esa partición etc…
Si copias todo sda estás copiando todo el disco. Puedes preferir copiar en su lugar sda2, y entonces estás copiando toda la partición sda2.
Por razones obvias, lo suyo es que el sitio donde vas a copiar una partición o un disco tenga un tamaño igual o superior al del disco o partición que vas a copiar. Si quieres copiar 16GiB necesitas que el disco de destino tenga al menos esos 16GiB, y aquí hay que tener cuidado con el redondeo de muchos fabricantes. Lo suyo para copiar 16 GiB es usar un pendrive de 32.
Puedes copiar solamente la partición que corresponda a la raíz ( / ). En el ejemplo,
dd if=/dev/sda3 of=/dev/sdb
Y para restaurar eso:
dd if=/dev/sdb of=/dev/sda3
Siempre y cuando el comando que uses para restaurar sea el inverso (cambiar if por of) al que usas para hacer la copia tendrá que funcionar. Pero como te he dicho, usa lsblk para identificar claramente qué estás haciendo.
Y recuerda que para restaurar de esta forma no puedes usar una sesión de usuario normal. Tienes que usar un disco de arranque para que / no esté en uso. Si no lo haces, podrías sobreescribir la sesión e interrumpir la copia a medias, con lo que tendrías que reiniciar con un disco de arranque y tal