¿Cómo mover Linux a otra partición?

9

Necesito hacer una copia de un sistema Linux en funcionamiento, que (al estar contenido en / y el nuevo lugar está preparado en / mnt / sdb5) parece contener una cantidad considerable de enlaces duros, blandos y archivos especiales en / dev; sería cpiomanejar este trabajo sin aplicar mágico adicional?

Garantías conocidas actualmente:

  • no va a eliminar / modificar el sistema en ejecución hasta el momento en que la copia se considere arrancable y funcione root=/dev/sdb5; antes de eliminar, realice una copia de seguridad de partición completa.
  • utilizará cpio para archivar cada directorio raíz por separado, por lo que lo descomprimirá del entorno LiveCD para que la partición de donantes no se vea perjudicada

Pero aún así, no va a perder tiempo solo porque cpio perdió alguna bandera y paralizó los permisos / tipo de nodo / soft o hardlink.

¿Qué herramienta usar / qué rocas submarinas evitar?

kagali-san
fuente
@warren, gracias. va a hacer otra prueba cpio-vs-tar ahora;)
kagali-san
no te preocupes: espero que ayude :)
warren

Respuestas:

10

Para responder la pregunta real sobre cpio: Estas son las banderas que usaría para cpio:

find / -xdev -depth \! -path ./lost+found -print0 | cpio --pass-through --null --dot --make-directories --unconditional --preserve-modification-time --sparse /mnt/sdb5

Por supuesto, como no está copiando a través de la red, simplemente usaría cp:

cp --archive --sparse=always --verbose --one-file-system --target-directory=/mnt/sdb5 /

Y si desea poder copiar varias veces, rsynces una mejor opción por sus capacidades de reanudación. (También, como cp, maneja las ACL y los atributos extendidos y, opcionalmente, puede funcionar en la red como cpio. Por lo tanto, es la opción más útil, excepto para hacer la primera copia localmente, que prefiero usar cp).

rsync --archive --inplace --hard-links --acls --xattrs --devices --specials --one-file-system --8-bit-output --human-readable --progress / /mnt/sdb5

No te olvides de copiar /booty /dev!

/bootes fácil, solo cópialo. Pero /deves mucho más complicado hoy en día ya que está oculto por udev. Recomiendo el siguiente procedimiento:

  1. mkdir /tmp/dev
  2. mount --move /dev /tmp/dev
  3. Copie /devpara /mnt/sdb5usar uno de los comandos anteriores
  4. mount --move /tmp/dev /dev
  5. rmdir /tmp/dev
Osito de peluche
fuente
6

Como @Klox mencionó, al copiar particiones del mismo tamaño, estoy de acuerdo en usar dd.

Pero cuando desea copiar un disco en una partición diferente con un tamaño diferente, prefiero ir con rsync. Monte la nueva partición (digamos, / mnt / new) y:

# rsync -a --exclude=/proc --exclude=/dev --exclude=/sys / /mnt/new

Sin magia adicional para enlaces simbólicos y sin necesidad de CD en vivo (un solo usuario / init 1 funcionará bien).

Torian
fuente
Ahh si. Lo uso rsynctodo el tiempo y perdí lo obvio. Me gusta ddpor las razones que dije, pero rsyncse ajusta mejor a las necesidades del OP.
Klox
3

La variante más óptima de ddusar es partimage, copiará solo la sección usada de la partición, lo que hace que la copia de particiones grandes no utilizadas sea más conveniente.

Tenga en cuenta la advertencia importante:

Partimage NO admite Ext4, que es el valor predeterminado en las nuevas instalaciones de Ubuntu.

Se incluye una copia conveniente en la distribución del CD de System Rescue .

Steve-o
fuente
2

Cuando muevo instalaciones de Linux entre discos duros, siempre inicio desde un Live CD y lo uso ddpara copiar toda la partición. Reconozco que esto no trata con los cambios en el tamaño del disco (inevitablemente, el nuevo disco es más grande, lo que simplifica las cosas), pero me gusta la técnica exactamente por las razones que le preocupa usar cpio: algo puede salir mal. Usando la ddtécnica, es todo o nada: o el nuevo disco arranca y todo es igual, o el disco no arranca. No hay riesgo de que surjan problemas al acecho más tarde.

Ahora, por supuesto, está el problema de que la partición no llene el nuevo disco, pero prefiero crear una nueva partición para llenar el espacio extra y confiar en enlaces simbólicos para mover los directorios. (Estoy seguro de que también hay herramientas para cambiar el tamaño de las particiones, pero no las he usado).

Klox
fuente
El sistema del que hablo tiene aproximadamente 50 gigas gratis en una partición XFS de 500 gb (que no se puede reducir, actualmente solo se admite el crecimiento a través de xfs_grow), y la partición raíz también es XFS; peor aún, es un Gentoo bien establecido que es casi tan gordo. Peor aún, el movimiento debe hacerse sin agregar más almacenamiento y actualmente no puede hacer una copia de seguridad de más de 60 conciertos, por lo que no hay operaciones de partición. Necesito poner Win 'en esa máquina para probar algunas cosas.
kagali-san
Además, dd es bueno, pero para las operaciones de unidad / partición tiendo a usar más soluciones patentadas. Acronis TrueImage parece funcionar mejor (compresión, recursos compartidos de samba, desde livecd / liveusb flash).
kagali-san