¿Cómo recuperar SO de todo un disco a una partición?

Hola,

Copiar una partición con un sistema instalado previamente en ella a un USB mediante Gparted con la idea de pegarlo posteriormente, si te falla … es posible, relativamente fácil, pero nunca me he enfrentado a la posibilidad de copiarlo de esta manera si el sistema ha sido instalado en todo el disco, sin particionamiento.
No creo que se pueda hacer con Gparted, ¿es posible? – alguna otra forma de realizarlo para no perder el sistema instalado si …?

Gracias por cualquier sugerencia, vínculo con información, tutorial …

EDIT:

Me refiero a este ejemplo, ¿como copiar este sistema a un USB?

Hola.

La forma más evidente de hacer eso es clonar todo el disco. Pillas un pendrive o disco externo que tenga al menos 16 GiB y con dd haces un volcado de uno a otro. Puede llevarte un montón de tiempo.

La copia puede comprimirse para que ocupe menos, pero eso requiere algo de memoria RAM disponible y un procesador razonable para que el ahorro de tiempo merezca la pena.

https://es.opensuse.org/SDB:Funtamentos_de_bash#Copia_con_dd

Hay una distribución de Linux especializada en copias como la que quieres realizar: Clonezilla

*Tengo problemas para editar en el Foro, aún no me acostumbro, o no entiendo …
Me faltó editar esta parte (no me da permiso para editar mas de una vez) (??)

Debo aclarar que después debo pegarlo (o de cualquier otra forma) llevarlo a una partición, no a otro disco entero … en realidad ahí es donde radica mi mayor dificultad, por ejemplo usando un comando ‘dd’ se copia todo pero ¿como lo coloco después en una partición?

Ejemplo:

sudo dd if=/dev/sda of=/dev/sdb bs=64K conv=noerror,sync

esto lo copia todo al USB, ¿y después …?, ¿como lo llevo a la partición en donde quiero tenerlo?

Un disco entero es muy fácil clonarlo con Clonezilla. El comando dd, como se explica en el artículo de la wiki, hace copias bit a bit.

dd if=cosa_a_copiar of=cosa_una_vez_copiada

dd usa un montón de parámetros: tamaño de bloque, número de bloques… y se puede combinar con otros comandos para comprimirla. De hecho, es lo que hace Clonezilla.

  • cosa_a_copiar es literalmente cualquier cosa: un fichero, una partición de disco, un disco entero…
  • cosa_una_vez_copiada es donde se guardará la copia.

Para restaurar un backup necesitarás algún tipo de liveUSB, DVD o lo que sea, para poder sobreescribir toda la raíz. El funcionamiento en ese caso es justo al revés:

dd if=cosa_que_has_copiado of=sitio_a_donde_restaurar

Supongamos que tu disco es /dev/sda y el usb /dev/sdb. Entonces la copia de seguridad se hace:

dd if=/dev/sda of=/dev/sdb

y para restaurar ese mismo usb en el disco en el que estaba:

dd if=/dev/sdb of=/dev/sda

Salud!!

No me explico bien, o no me hago entender.

Eso fué lo que hice aquí:

Ahora tengo ese sistema operativo que se ve en la captura de pantalla todo dentro de un USB, pero …

¿Como lo pego a una de las particiones que tengo el la PC?

Traté de hacerlo formateando la partición en ext4 y no me sale, no lo injerta, coloca o pega en la partición, y no la puedo dejar ‘sin asignar’ porque tengo que poner la ruta a donde va a ir …

Regreso mañana,

Gracias

Hola:

No he usado dd, pero creo que la respuesta te la dijo @karlggest

Para restaurar un backup necesitarás algún tipo de liveUSB, DVD o lo que sea, para poder sobreescribir toda la raíz. El funcionamiento en ese caso es justo al revés:

dd if=cosa_que_has_copiado of=sitio_a_donde_restaurar

Supongamos que tu disco es /dev/sda y el usb /dev/sdb. Entonces la copia de seguridad se hace:

dd if=/dev/sda of=/dev/sdb

y para restaurar ese mismo usb en el disco en el que estaba:

dd if=/dev/sdb of=/dev/sda

Ya hace años usaba partition manager, pero con lo que hay hoy, se tiene que ir por eso, y dd (no se si hace la copia bit a bit) .

Como esto ya se hizo unas veces ¿ no hay que cambiar la id del disco nuevo, para que la copia funcione, en él ? (UUID) .

¿ y alguna modificación en fstab?

Saludos

El foro tiene uns restricción para todos (excepto para los Moderadores Globales). Sólo se puede editar el post durante 10 minutos tras haberlo publicado. Más allá no se puede.

Saludos

No tienes que pegar nada. Lo que tienes en el usb en ese punto es una copia exacta del disco, con sus particiones y los ficheros que contenga cada partición.

Entonces lo único que tienes que hacer es copiar eso en el disco, no en la partición. Pero no puedes hacerlo como usuario del sistema, ni siquiera root: necesitas algún disco de arranque.

Te seria mas fácil volverlo a instalar que restaurar la copia de seguridad.

¿Podrías explicarme por favor que significa esta sentencia? – sobre todo eso de que necesito algún disco de arranque.

Lo único que comprendo es que efectivamente no se pega en la partición, por mas que lo intente siempre sale un error …

keos@localhost:~> sudo dd if=/dev/sdb of=/dev/nvme0n1p7 bs=64K conv=noerror,sync
[sudo] contraseña para root: 
dd: error al escribir en '/dev/nvme0n1p7': No queda espacio en el dispositivo
610033+0 records in
610032+0 records out
39979057152 bytes (40 GB, 37 GiB) copied, 2072,04 s, 19,3 MB/s
keos@localhost:~> 

En donde /dev/sdb es el USB y /dev/nvme0n1p7 la partición.

¿Cuando se trata de un sistema que ha sido instalado en todo el disco … jamás se podrá copiar después a una partición?.

Y si cambia el disco, luego tiene que redimensionar, lo que hace que le compense aún más. Como mucho volcar lo de /home/cuenta/.local, /home/cuenta/.config y alguna cosa más.

Ok, entonces ¿por qué intentas hacer justamente eso?

Eso es una partición. Antes de hacer estas cosas, acostúmbrate a usar el comando lsblk para identificar claramente los dispositivos. Incluso lsblk -f para ver qué sistema de ficheros tienen y así saber a ciencia cierta qué es cada cosa.

Supongo el el disco en este caso es nvme0n1. Habría que asegurarse de qué comando has utilizado exactamente para hacer la copia. Debería ser:

dd if=/dev/nvme0n1 of=/dev/sdb bs=64K conv=noerror,sync

Asumiendo que el pendrive es /dev/sdb.

Lo suyo después de hacer una copia es proceder a montarla para comprobar que efectivamente hemos copiado todo lo que queríamos copiar. Desenchufa el usb y vuelve a enchufarlo. Con lsblk comprueba que contiene las mismas particiones y prueba a montarlas manualmente (salvo la swap). Ej.: sudo mount /dev/sdb3 /mnt
(usa la información que te devuelva lsblk)

Y para restaurar, después de desmontar cualquier cosa que hayas montado:

dd if=/dev/sdb of=/dev/nvme0n1 bs=64K conv=noerror,sync

Insisto, estas cosas está guay saberlas etc pero para instalar lo suyo es usar la instalación.

Lo intenté porque eso es lo que quería hacer … ahora, después de fallarme, en varios intentos, me doy cuenta que no lo consigo realizar y recurro a ustedes para que me digan si estoy tratando de hacer algo imposible, per parece que no me explico bien …

Lo que quiero es tener en una partición el disco entero que copié … ¿me pueden confirmar que esto es imposible? – eso es todo!.

Lo mejor es respaldar en un sitio o varios sólo (y enfatizo el sólo) todo el contenido del directorio /home/nombre_de_tu_usuario.

Una perfecta estructuaricón del disco sería (teniendo en cuenta un disco de 200Gb):
sda1 de 500 Mb para la partición EFI (o como te diga el instalador de openSuSE)
sda2 de 4Gb para swap
sda3 de 40Gb para /
sda4 de lo que quieras para /home (usualmente el resto del disco)

De esa forma sólo has de copiar el contenido de /home/nombre_de_tu_usuario para tener una copia de tus cosas valiosas del directorio personal y sus configuraciones.

sda3 (/) es lo que reinstalarías en una nueva instalación.

Saludos

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 :grinning:

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 :grinning:

En realidad, el post anterior es lo que se denomina “clonar discos”.

Puedes hacer otra cosa. Supongamos que tienes los discos indicados. Puedes hacer cosas como

sudo mount /dev/sdb1 /mnt
dd if=/dev/sda1 of=/mnt/boot.img

Pero de nuevo para que sea útil para lo que tú quieres este tipo de copias las tendrías que hacer con algún disco de arranque, porque si intentas hacer

dd if=/dev/sda3 of=/mnt/raiz.img

dd podría asumir que el pendrive está montado (porque de hecho, lo está) y no estoy seguro de qué haría en ese caso. Como mínimo al restaurar seguramente dé error.

Sigo sin entender, y ya no se como explicarme mejor; tengo todo el sistema (que había sido instalado previamente en todo un disco de una PC) ya copiado en un USB …

¿como lo pego, añado, clono, o lo que sea, a ‘una partición’ de ‘otra PC’?.

¿Es imposible?

Yo lo que hago es copiar el contenido de mi /home a otro disco para tener una copia de seguridad.

Tengo el directorio krovikan copiado en 2 discos duros. Sin usar nada de dds, copiados con Dolphin, Nautilus o lo que uses.

Luego, en una instalación nueva, cuando me pide el instalador nombre de usuario y contraseña pongo exactamente lo mismo que tenía antes (o escojo la partición con /home que suele detectarla).

En caso de no detectarla (y tras poner como dije el mismo usuario y contraseña). Una vez acabada la instalación y entrado en el sistema gráfico, abro Dolphin (o Nautilus, lo que uses) y la copio (sin dds) a /home.

Aquí tengo una de las copias:

sdb                                                                           
├─sdb1 xfs                f86ec1b4-4b6f-4d7b-ade6-1421075499cf                
└─sdb2 xfs                a721ab93-49c4-4cf2-9572-ab836bec1b71    5,9G    99% /copias

Y aquí la otra:

sdc                                                                           
└─sdc5 xfs                831953c3-9b44-4992-9744-ac8e1cc1ff4a    3,1G   100% /copias2

Las particiones de mis discos:

Saludos

No sé qué comando has usado exactamente. Si lo has hecho bien, has copiado todo tu disco /dev/nvme0n1 en un pendrive /dev/sdb. En ese caso, lo que tienes que copiar es todo tu pendrive (if=/dev/sdb) en tu disco duro (of=/dev/nvme0n1).

Ayudaría saber qué no entiendes del procedimiento. Tanto el disco como cada partición son ficheros por lo que a ti respecta, así que puedes hacer copias con dd y serán “discos” iguales.

En la respuesta nº 5 dijo el comando usado.

Saludos

Ya, pero más abajo dice estar intentando usar otro diferente (nvme0n1 en lugar de sda)

para restaurar y no sé de dónde lo saca. Lo suyo es lsblk para ver qué discos hay y ya luego la copia y restauración con dd en función de los dispositivos existentes.