Mover /home a nueva partición (otra forma)

mover home

Índice

  1. Creamos una partición nueva.
  2. Vamos a modificar fstab
  3. Copia de seguridad del /home
  4. Ahora vamos a mover home
  5. Creamos un nuevo /home
  6. Montar la partición en /home
  7. Mover los contenidos a la partición
  8. Borrar /home.old
  9. Borramos la copia de seguridad

A modo de resumen: trato de hacer un cómo para mover el /home a otro lado (en este caso una partición nueva). No es original ni he inventado nada, pero intento aunar un poco lo que he leído y sobre todo el dar un enfoque entendible por nuevos usuarios.

Objetivo

El objetivo es mover el directorio /home (carpetas de usuarios) a otro lugar, básicamente otra partición.

En mi caso, /home estaba como un directorio dependiente de root (/) en la misma partición que éste.

Realmente, esta opción, que en su momento me pareció sencilla, no es lo más eficaz.

¿Por qué? porque si se da el caso de que tengas que hacer una instalación limpia o tengas que reinstalar el sistema operativo (root o /) es una ventaja tener /home independizado, sin tener que hacer copias de seguridad a toda pastilla.

Si no me he explicado o no resulto convincente, mira este artículo, a mí me convenció :-), y me acabé de convencer cuando, por unos fallos tontos, en otro ordenador tuve que reinstalar un par de veces el sistema operativo.

A propósito, ahí también hay otra forma de hacer la independización. Bueno, lee todas y usa la que más te convenza.

Sobre este [CÓMO]

Este manualillo es una aportación de resumen de cómo lo he hecho.

No es la forma. Es una forma de hacerlo. De hecho, en esta misma web hay otra forma de hacerlo, y al final encontraréis una pequeña reseña de artículos que he revisado sobre el tema, con propuestas ligeramente distintas.

Después de una introducción común, lo he divido en dos partes, para usuarios avanzados (que pocos leerán, pues ya lo sabrán :-)) y para usuarios básicos o principiantes, como yo, que quieran entender y aprender cómo se hacen las cosas, como yo. En esa parte, hago las cosas más relajadamente y explicando lo que puedo.

Entorno de trabajo

Lo he hecho sobre un Kubuntu Dapper 6.06, pero pienso que hubiera funcionado igual en cualquier caso.

Este ordenador es un Pentium-II MMX de 350 Mhz (a que da risa :-)) con Kubuntu instalado (le aumenté la Ram a 460 Mb, el máximo que leía la placa base).

Tengo dos discos, uno de 4 Gb que contiene Win98 y otro (el que se usa) con un disco de 30 Gb con Ubuntu.

En su momento, cuando instalé Kubuntu a mi hija, lo hice en una sola partición primaria, que contenía todo el sistema operativo y el /home (carpetas de usuarios), bueno más una extendida que contenía la Swap o memoria de intercambio.

Para saber algo más sobre particiones y gestión de las mismas en Linux, a nivel sencillo, mira este artículo, el apartado sobre "preparativos previos" e "instalación paso 4: preparando las particiones".

Para usuarios avanzados

Lo que he hecho es modificar la partición primaria, para dejar hueco para poner otra primaria, que he formateado como ext3 y como etiqueta le he puesto /home.

La he hecho de unos 22 Gb y la primaria donde está root (/) la he dejado de unos 7 Gb. Y además, estaba y he dejado igual la partición extendida con una unidad lógica para la swap, de 1 Gb.

Todo ello lo he hecho con un liveCd de Gparted.

Una vez preparada la partición, he seguido el sistema indicado por gotxa en este hilo de ubuntu-es:

  • he modificado el fstab para poder incorporar el punto de montaje para home:
    /dev/hdc3   /home       ext3   defaults,errors=remount-ro 0      1

    (he dejado las mismas opciones que tenía para /, teniendo en cuenta que es para Dapper si alguno ve algo poco conveniente...)
    Para Hardy sería:

    /dev/hdc3   /home      ext3   relatime 0      2

    En Karmic koala se edita el fstab igual que en Hardy si editamos con los datos que da para Dapper nos dará un error a la hora de montar /home

  • he movido todo el contenido de /home a /home.old (directorio inventado para simplemente mover los datos)
    sudo mv -v /home /home.old
  • compruebo que /home.old contiene lo que tiene que contener
    sudo ls /home.old
  • creo un nuevo directorio /home
    sudo mkdir /home
  • montamos /dev/hdc3 en /home
    sudo mount /home
  • muevo el contenido de /home.olda /home, ya montado en la nueva partición
    sudo mv -v /home.old/* /home
  • compruebo que el contenido de /home parece correcto
    sudo ls /home/
  • compruebo que /home.old está vacío
    sudo ls /home.old/
  • borro /home.old
    sudo rmdir /home.old

En el enlace al hilo antes expuesta, él lo resuelve en una sola línea para la consola. Yo he preferido ir un poco más despacio.

Para usuarios menos expertos (como yo :-))

He seguido el método expuesto por gotxa en este hilo de ubuntu-es.

Voy a hacerlo por pasos, y explicando lo que pueda, para hacerlo más accesible y aprender. Para hacer cosas de estas, me gusta mucho la consola. Pero, al principio, me sentía como un brujo, haciendo y repitiendo conjuros (pon en consola sudo mkdir /new/ ; cp file /new/file...) Bueno, cuando uno empieza a entender qué, porqué y para
qué hace algunas cosas, la magia es sustituida por el espíritu científico, y las cosas son más fáciles y lógicas :-)

Lo hago por terminal o consola (Konsola) por dos razones: es más fácil (aunque parezca a un recién llegado un poco paradójico) y es más rápido.

Importante, será mejor que hayamos cerrado todo (que no estemos trabajando con algún archivo de nuestro /home) y que sólo haya una sesión activa (que no haya habido alguna otra sesión abierta y se haya cambiado de usuario sin cerrarla)

Este es el proceso que seguiremos:

  1. Creamos una partición (si no existía) donde queremos que asienten los datos del home nuevo
  2. Crearemos una entrada en fstab para que pueda montar la nueva partición en /home.
  3. Haremos una copia de seguridad del home (opcional) por si acaso.
  4. Moveremos /home a un emplazamiento temporal.
  5. Creamos un nuevo /home (vacío por ahora)
  6. Montaremos la partición en /home
  7. Movemos los datos de usuarios a la neva partición.
  8. Borramos el directorio temporal usado.
  9. Borramos la copia de seguridad si todo ha ido bien.

1.- Creamos una partición nueva.

Usando Gparted (un liveCd), he creado una partición.

Además del enlace sobre las particiones, tienes aquí un manual sencillo de cómo usar Gparted en modo gráfico en esta dirección.

Échale un vistazo, que está muy bien explicado.

2.- Vamos a modificar fstab

fstab es un archivo de configuración que controla cómo se montarán las particiones, para que Linux pueda acceder a su contenido. Se encuentra dentro del directorio /etc/, en el que se guardan archivos de configuración.

Lo primero, recomendable si uno es un principiante, es hacer una copia de seguridad del archivo. Lo haremos en consola, porque es más rápido y más fácil (sí, más fácil :-))

Para aprender a usar la consola o terminal y conocer más sobre comandos u órdenes, puedes consultar estas referencias, entre otras muchas: una en inglés, otra en español o esta otra... (Cosillas que he encontrado a vuela pluma, mira más en google)

Vale, hagamos una copia de seguridad (que llamaré fstab.orig) del archivo fstab. Abrimos la Konsola (K --> Sistema --> Konsola) y tecleamos:

sudo cp /etc/fstab /etc/fstab.orig

Aclaro:
sudo, significa que actuaremos como superusuario o root (por eso te pedirá la clave de usuario, para que te des cuenta que va en serio), y lo hacemos porque es un archivo de configuración dentro de un directorio /etc/ que los usuarios normales no pueden "tocar".
cp es el comando u orden copiar.
/etc/fstab es el archivo origen, el que vamos a copiar. El archivo fstab está dentro del directorio /etc/
/etc/fstab.orig es el archivo copia que se va a crear. Lo creará porque no existía, si no lo sobrescribiría.

Ahora modificaremos fstab, para meter una entrada nueva para definir cómo montará la participación en /home:
En la consola, tecleamos:

kdesudo kate /etc/fstab

Aclaro:
kdesudo, es el equivalente a sudo pero que se usa cuando pretendemos ejecutar una aplicación gráfica como root.
kate es un editor de texto de kde. Se podría usar cualquier otro. Este es sencillo de usar.
/etc/fstab es el archivo que vamos a editar.

Al final del archivo, escribiremos:

# Entrada para montar /home desde la partición.

/dev/hdc3   /home      ext3   defaults,errors=remount-ro 0      1

La primera frase es un comentario (se "comenta" poniendo delante un #), esto es, es una frase que el ordenador no ejecuta, no lee, y sirve para que los humanos nos acordemos para qué lo hicimos, por ejemplo.
La segunda, dice que:
/dev/hdc3 es la partición donde se guardarán los archivos de los usuarios (en mi caso es esa) /home es el punto en que se montará, dentro del árbol de directorios de Linux
ext3 es el tipo de archivos con el que formateamos la partición.
defaults,errors=remount-ro son "opciones" de montaje. defaults supone que se montará automáticamente, en modo lectura-escritura, etc y errors=remount-ro hace que en caso de error sólo cargue en modo lectura.
0 es el dump (paso de explicarlo :-)) y el 1 es el pass-num, que permitirá que se examinen errores en la unidad (0 supone que no se examina)

Esta segunda línea es para Dapper. En Hardy probablemente también funcionaría.
En Hardy, se puede montar, si no, de esta manera:

/dev/hdc3   /home      ext3   relatime 0      2

Vuelta atrás. Si la cosa no funciona, podríamos recuperar el fstab original:

sudo cp /etc/fstab.orig /etc/fstab

3.- Copia de seguridad del /home

Crearemos una copia de seguridad del contenido de /home, por si acaso.

Primero crearemos un directorio donde copiaremos el contenido:

sudo mkdir /home.copia/

mkdir es una orden para crear directorios (make=crear directory=directorio) y /home.copia/ es el nombre del nuevo directorio.

Ahora hacemos la copia:

sudo cp -a /home/* /home.copia/

sudo y cp los conocemos. -a es una opción múltiple que hace que copie todos los contenidos y "recursivamente" (es to es, va entrando en todos los directorios y copiando todo su contenido)

Depende lo que tengas en home (usuarios y contenidos), tardará un rato.Notarás que ha terminado porque aparecerá una nueva línea de comandos vacía.

He hecho la copia en la misma partición (root /) donde estaba el /home original. Pero si ahí hay problemas de espacio, nada impide hacer la copia en otra partición que ya tengamos montada, a un DVD o CD mediante un grabador como K3b o a un destino fuera del ordenador, de red, mediante samba, ftp o lo que fuera.

4.- Ahora vamos a mover home

Vamos a mover el contenido de home a un nuevo directorio que vamos a llamar /home.old Es un lugar temporal, guardaremos ahí los documentos de home hasta el final del proceso. Luego lo borraremos. NO copiamos home sino que lo moveremos a un nuevo directorio.

Lo hacemos mediante konsola:

sudo mv -v /home /home.old

Aclaro:
sudo conocemos,
mv signifia mover (si el destino no existe, lo crea)
-v significa "verbose", palabra de difícil traducción que sería algo así como cotilla o cotorra o parlanchín (espero que no sean términos localistas y se entiendan), esto es, que si se necesita dar información, la aporta.
/home es lo que vamos a mover y
/home.old es el destino (si no existe, se crea). Una vez movido, /home ha desaparecido.

Cuando lo haya hecho, aparecerá algo parecido a esto:
/home/documentos/ --> /home.old/documentos/ y aparecerá una nueva línea de comandos vacía.

Comprobemos que /home.old tiene contenido. Para ver el contenido de /home.old/ podemos usar ls ("listar")

ls /home.old/

Nos mostrará sólo las carpetas a "primer nivel" y no ocultas.
Por ejemplo, si en /home/ teníamos dos usuarios (usuario1 y usuario2), al hacer ls en /home.old/ (después de haber movido los datos, lógicamente) nos arrojará:

usuario1 usuario2

Vemos que hay datos. Va bien.

Si intentáis hacer lo mismo con /home veréis que ya /home no existe.

5.- Creamos un nuevo /home

Como hemos dicho, al mover todo a /home.old/ /home ha desaparecido. Es por ello que debemos crear una nueva carpeta /home, en la que montaremos después la nueva partición, que es la que físicamente contendrá los archivos que formarán nuestro home.

Para crearlo, en konsola:

sudo mkdir /home

Ya existe de nuevo /home. Puedes verlo mediante Dophin o bien, en konsola, viendo lo que existe dentro de root (/). Escribe en konsola:

ls /

Entre unos cuantos nombres de carpetas y archivos, encontrarás home.

6.- Montar la partición en /home

Ya nos vamos acercando al final. Por si acaso ya nos hemos perdido, recapitulemos.

Queríamos mover los archivos y directorios de nuestro /home a una nueva partición, que hemos creado. Hemos movido el /home original a un nuevo lugar /home.old. Hemos preparado fstab para que se pueda montar la nueva particion en un nuevo /home que acabamos de crear. Ahora, vamos a montar la nueva partición en esa nueva carpeta /home. Con ello, los contenidos de /home (carpetas de usuarios) estarán físicamente en esa nueva partición, aunque el sistema operativo la montará en esa carpeta /home (y parecerá que físicamente los archivos cuelgan de root /, aunque no será así).

Para montarla, es muy sencillo. En la konsola escribimos:

sudo mount /home

Así de simple.

Aclaremos:
sudo es conocido nuestro :-)
mount es un comando para montar una partición en un punto de montaje (carpeta). Su sintaxis habitual es, tiene que ser, más compleja: hay que definir qué partición es, qué tipo de archivo y con qué opciones se quiere montar (por ejemplo si será de lectura y escritura o sólo lectura. Vale y ¿por qué ahora basta con sólo eso? Porque ya le hemos dicho al sistema, mediante la línea que introdujimos en fstab qué montar y con qué opciones se montará en /home.
/home punto de montaje.

7.- Mover los contenidos a la partición

Vamos a mover los datos de usuarios (lo que inicialmente estaba en el viejo /home y hemos movido provisionalmente a /home.old) al nuevo /home, que es tanto como decir que los moveremos a la nueva partición.

Ya sabemos cómo se hace. en Konsola escribimos:

sudo mv -v /home.old/* /home

Aclaremos:
Si lo comparamos con la instrucción que antes usamos, veremos una diferencia:
/home.old/*
Como /home ya existe, si pusiéramos sudo mv -v /home.old /home (que sería lo contrario a lo que hicimos antes) no haría como antes convertir /home.old en /home, sino que como /home ya existe, lo que haría es mover /home.old adentro de home.
Al poner /home.old/* lo que le decimos es que mueva todo el contenido (*, cualquier dato dentro de /home.old/) a /home.

Se llevará un buen rato para hacerlo.

Cuando termine, comprobamos si los datos parecen que hayan movido bien. En Konsola, escribimos:

ls /home

Aparecerán datos. Si lo hacemos con /home.old/ y todo ha ido bien,

ls /home.old/

saldrá vacío.

8.- Borrar /home.old

Comprobado que parece que todo se ha movido bien y que /home.old está vacío, borramos ese directorio. En konsola:

sudo rmdir /home.old

Aclaremos:
Ya nos parecen cosas menos raras, seguro.
rmdir es un comando para eliminar directorios vacíos (rm "remove" remover o borrar y dir directorios). Eso significa que si el directorio tuviera algo (esto es, algo no se hubiera movido) no dejaría borrarlo y arrojaría error.

9.- Borramos la copia de seguridad

Si ya ha salido todo bien, podremos borrar la copia de seguridad.

Si lo preferimos, podemos reiniciar el ordenador antes, para estar
seguros de que todo está como debe.

Para borrar, en konsola:

sudo rm -r /home.copia

Fin del asunto :-)

---------------------------------------------------------------------------------------

Referencias

Mover /home a otra partición
Método simple de Gotxa
[CÓMO] Mover tu /home a otra partición distinta de la raíz.
Mover home a partición distinta
GParted: Gestiona tus particiones gráficamente
Instalar Ubuntu 8.04 Hardy Heron
Independizando el /home