Mover directorios a otras particiones en Linux o cómo pasar mi /home a otra partición

Algunos de nosotros tenemos por costumbre redirigir nuestros directorios de archivos personales a una partición distinta a la del sistema, en Windows, por ejemplo, suelo tener instalado el sistema en C:\ y los datos de mis carpetas (tales como Mis documentos, Mis imágenes, etc) guardadas en D:\ o incluso si puedo (y mi configuración de discos duros me lo permite) en un disco distinto al del sistema operativo. Cuando usamos Windows, estoy hay que hacerlo posteriormente a la instalación del sistema operativo, en Linux en cambio puedes definir esta configuración durante su instalación, pero… ¿qué pasa si instalas Linux y se te olvida definir tu directorio privado en otro disco o partición?

Mover directorios de sistema en Linux. Un caso práctico mover /home a otra partición:
(Los comandos a escribir por consola se indican en cursiva y negrita)

El primer paso es identificar el nombre de nuestras particiones. Esto podemos hacerlo escribiendo en consola el siguiente comando:

$ sudo fdisk -l

El comando nos devolverá un listado de los discos duros que tenemos, junto con sus respectivas particiones.

Podemos encontrar la particiones (en la mayoría de los casos) con las formas hdXY  ó  sdXY, donde la “X” es la letra que identifica el disco duro (”a” primer disco, “b” el segundo…) e “Y“ un número que identificará la partición. hdXY identificará siempre a un disco tipo IDE y sdXY estará identificando un disco tipo SATA.
También podemos ver detalles de las particiones y discos utilizando el programa “gparted”. Si no lo tenemos instalado podemos hacerlo escribiendo en nuestra consola el siguiente comando:

$ sudo apt-get install gparted

En cualquier caso, nuestro siguiente paso es apuntar que identificador tiene el disco y la partición a la que queremos mover nuestro directorio /home

Podríamos en este punto, crear y ordenarle al sistema que nos monte nuestra nueva partición al arranque configurando el archivo /etc/fstab y el mismo movería nuestros datos a la nueva ubicación del directorio /home durante el siguiente arranque, sin embargo, en ocasiones, esto puede no funcionar, de modo que para curarnos en salud, antes, vamos a hacer una copia de todos nuestros datos en una carpeta aparte. Desde nuestra terminal (consola) escribimos.

$ cp /home/* /home.old    (hacemos copia de seguridad por si acaso

Ahora montamos nuestra partición en el punto /mnt/home

$ mount /dev/hdXY /mnt/home  (donde X es la letra del disco en el que queremos montar e Y el número de la partición a montar en ese disco, es decir, le estamos diciendo donde está la ubicación física en la cual vamos a montar la partición de destino para tu /home).

Copiamos los datos a la partición recién montada en el punto /mnt/home

$ cp -dpR /home/* /mnt/home  (las opciones –dpR le indican al comando cp que la copia la efectúe la copia recursivamente “R”, sin seguir los enlaces simbólicos  en origen “p”, pero preservándolos “d”)

Una vez finalizada la copia, podemos desmontar la partición.

$ umount /mnt/home

Y volverla a montar ya en su destino final:

$ mount -t ext4 /dev/hdXY /home  (lo que le decimos aquí al comando mount es que monte el directorio /home en la particion hdXY, siendo X el disco e Y la partición deseada. Al pasarle el parámetro –t ext4 le indicamos que para montar esa partición use el sistema de archivos ext4. Podéis saber más sobre los sistemas de archivos en Linux desde aquí.

Una vez hecho esto, solo nos queda hacer que este montaje ocurra cada vez que iniciamos el equipo esto lo hacemos indicándolo en el archivo /etc/fstab. Un muy buen artículo sobre las configuraciones del fstab puede encontrarse en esta dirección.

$ nano /etc/fstab
Se nos abrirá el archivo con el editor de texto “nano” nos vamos al final del fichero y colocamos la siguiente línea, guardándolo con la combinación de teclas Ctrl+o (guardar)

/dev/hdXY /home ext4 defaults,errors=remount-ro 0 1

Con esta línea le indicamos al sistema que al arrancar monte el directorio /home en la partición hdXY, con el sistema de archivos ext4 y la configuración por defecto. Y que además si hay errores efectúe un remontado en modo solo lectura. Todas estas opciones están explicadas con detalle en el artículo referenciado anteriormente “A complete fstab guide”.

Con esto ya sólo nos queda reiniciar el equipo.
Ni que decir tiene que esta misma operación la podemos efectuar con cualquier directorio de nuestro sistema, esto nos da un flexibilidad grandísima a la hora de repartir nuestros datos en varios discos duros.

Anuncios

19 pensamientos en “Mover directorios a otras particiones en Linux o cómo pasar mi /home a otra partición

  1. Segun las recomendaciones de debian para la estructura de directorios el directorio la partición raíz / siempre debe contener físicamente las particiones /etc, /bin, /sbin, /lib y /dev, sino el sistema no podrá arrancar. Habitualmente es suficiente tener de 150 a 200 MB para una partición raíz.
    De modo que es recomendable no cambiar de particion ese directorio.
    Un saludo.

  2. Vamos a ver yo lo que quiero es que los datos estén en otro disco duro. Tengo una SSD de 256 Gb donde está instalado Linux Mint y un disco duro de 1000 Gb donde quiero que estén los datos. ¿Qué es lo que tengo que hacer? Disculpa que lo formule así pero es el cuarto día que utilizo linux y la verdad esto no es coser y cantar. ¡Qué coñazo¡ Disculpa.

    Te agradecería tu ayuda, de verdad.

  3. Buenas tardes Guillermo y gracias por estar ahí.
    Vamos a ver. Una vez que he escrito en el terminal la primera orden que indicas, a mi no me sale nada de hdXY ni sdXY.

    Me lista lo siguiente:

    Tamaño de sector (lógico / físico): 512 bytes / 512 bytes
    Tamaño E/S (mínimo/óptimo): 512 bytes / 512 bytes
    Identificador del disco: 0x000757a4

    Dispositivo Inicio Comienzo Fin Bloques Id Sistema
    /dev/sda1 * 2048 466753535 233375744 83 Linux
    /dev/sda2 466755582 500117503 16680961 5 Extendida
    /dev/sda5 466755584 500117503 16680960 82 Linux swap / Solaris

    AVISO: GPT (Tabla de partición GUID) detectado en ‘/dev/sdb’! La utilidad fdisk no soporta GPT. Use GNU Parted.

    Disco /dev/sdb: 1000.2 GB, 1000204886016 bytes
    256 cabezas, 63 sectores/pista, 121126 cilindros, 1953525168 sectores en total
    Unidades = sectores de 1 * 512 = 512 bytes
    Tamaño de sector (lógico / físico): 512 bytes / 4096 bytes
    Tamaño E/S (mínimo/óptimo): 4096 bytes / 4096 bytes
    Identificador del disco: 0xefbc26b4

    Dispositivo Inicio Comienzo Fin Bloques Id Sistema
    /dev/sdb1 1 4294967295 2147483647+ ee GPT
    La partición 1 no se inició en el limite físico del sector

    • Hola de Nuevo Juan. Lo que te esta diciendo ese resumen es que tienes dos discos SD (A y B) en el primero (Disco “a” de ahí lo de sda(y)) tienes tres particiones sda1, sda2, sda5. En el segundo sdb tiene una tabla de particiones creada con otro sistema. De ahí que te este diciendo que uses mejor la aplicacion GNU Parted (ya que fdisk no soporta el trabajo con ese tipo de particion).
      En resumidas cuentas tendras que hacer lo mismo pero con gnu parted en vez de con fdisk.
      Ahora mismo, estoy bastante liado y no creo que pueda escribir un articulo acerca del uso de gnu parted. Pero en cuanto me descargue un poco de trabajo lo monto.
      Siento haber tardado en contestar, pero llevo unos cuantos días desastre.
      Un saludo.

  4. Hola Guillermo, tengo una duda.

    Tengo un Lenovo IdeaPad Y500 con un disco duro sólido de 16 GB y uno convencional de 1 TB donde he instalado Linux Mint Mate en el disco duro de 16 GB. Mi problema es que con solo el SO el disco duro sólido está lleno. Ahora si quiero instalar programas me dice que no hay prácticamente espacio.

    ¿Puedo instalar los programas en el disco duro convencional y mantener el SO en el sólido?
    ¿Como lo hago?

    Gracias compadre!

    • Efectivamente, puedes instalar programas en otra partición. Mover directorios es algo que puedes hacer facilmente con casi cualquier directorio de Linux.
      Para el caso de los programas el directorio a mover es /usr.
      Te dejo aquí un enlace sobre como hacerlo (esta bastante bien explicado y si aun así tienes dudas siempre puedes preguntarme).
      Cambiar /usr a otra partición

      • Muchísimas gracias guillermo, he estado buscando mucho sobre esto. Voy a probar y te digo como me fué.

        Un saludo!

  5. Buenas noches Guillermo, antes de nada gracias por este wordpress.
    En caso de hacer una partición de disco para Linux y perder el arranque del anterior SO (en mi caso windows, creo que lo he sobreescrito aunque no la partición) ¿cómo podría hacer para poder elegir entre sistemas o en caso de no poder, volver al antiguo? ¿podría utilizar el pen como hice con la distro para bootear windows?
    Muchas gracias

  6. Siempre es de agradecer la voluntad de compartir experiencias y despejar dudas, desde el conocimiento y dominio de la materia, como es tu caso. Son mis inicios en Linux (Elemental) y quiero usar una partición FAT32 donde he movido la carpeta Documentos de Win7 y además hacer algo equivalente para trasladar /Home de linux. ¿Es posible hacerlo y crear y leer archivos indistintamente desde W y L?

    • Linux es capaz de leer particiones Fat, Fat32, NTFS sin problemas… No se que distribución de Linux estás usando, ni el modo en que lo has instalado, pero si lo tienes en un disco junto a un sistema operativo Windows, no tendrás problemas para montar, ver y leer la unidad con los datos de win.
      Lo de hacer algo equivalente para transladar /Home, no he acabado de entenderlo… 😉
      Un saludo.

  7. hola que tal gracias por el tutorial, veras yo estoy en esta situacion: tengo 3 distribuciones de linux instaladas, kubuntu, elementary os y DeepinLinux, el punto es que quería en los 3 sistemas operativos tubiera los mismos documentos, esto primero lo intente montando todo el home de los 3 sistemas en una misma unidad, y esto funciono a medias ya que si compartes los documentos, pero estropea las configuraciones de algunos como en kubntu que el tema de escritorio se estropea un poco,en elementary de plano no carga bien el entorno de escritorio y en deepin no tube ningun problema, ahora estoy intentando mover solo las carpetas de documento imagenes musica etc. mediante este comando :
    mount -t ext4 /dev/sda8/diego/imágenes /home/diego/Imágenes
    pero no puedo hacerlo ya que al parecer sda8 que es la unidad donde tenia el home compartido, no puedo acceder a el como un directorio, y hacer una particion para cada carpeta no me emociona mucho, conces alguna solucion o alternatva? gracias por tu atencion

    • Hasta donde yo se, no puedes montar un directorio concreto de una unidad. Cuando montas, montas dispositivos. No montas directorios (que es una especie de unidad estructural del sistema de archivos). Lo puedes ver claro en la definición de uso de mount: “mount -Opcion (tipo de dispotivo, fat, ext3, ext4, etc ) Directorio de destino (que tiene que estar creado ). Te pongo aquí un articulo al respecto
      Obviamente vas a tener problemas si intentas que tres sistemas operativos accedan a una unidad de datos como su directorio /home, aunque las tres distribuciones esten basadas en debian en sus orígenes es más que probable que existan diferencias a la hora de operar con sus directorios /home y su gestores de escritorio (una practica interesante sería intentar lo que hiciste pero instalando tres sistemas con la misma distro y ver como se comporta). Posibles orígenes de estos problemas, serían permisos, estructuras de directorios de trabajo de los distintos SO y sistemas de escritorio (todo esto dicho desde la prudencia de quien no ha visto los sistemas).

      Creo que lo más fácil en tu caso es crear una unidad solo para el almacenamiento de esos datos (entiendo que o son muchos o necesitas disponibilidad de ellos en todo momento) y decirle al sistema que te la monte al arrancar. Puedes crear a posteriori un enlace simbólico (ln) para acceder a ese directorio de datos más fácilmente.
      Un saludo.

  8. Hola Guillermo, una consulta.

    Tengo un disco HDD con las direcciones “/” y “/home” separadas en 2 particiones del disco. En “/home” tengo mis carpetas personales de datos (Descargas, Documentos, etc.) y también los archivos de configuración de mi usuario (.config, .local, etc.).

    Voy a instalar un disco adicional SSD donde quiero poner “/” y “/home” juntos en la misma partición pero que sólo incluya los archivos de configuración personales. Es decir, quiero tener el disco HDD con una particion que sólo contenga mis archivos personales, y el disco SDD que sólo contenga una partición “/” (que incluya dentro “/home”, como en una instalación estandar de Linux).

    Comentado eso, mi consulta es, si puedo clonar la particion “/” desde el disco HDD a una sola particion “/” en el disco SSD y decirle al sistema que reconozca dentro de “/” una carpeta “/home” que sólo contenga los archivos de configuración? Para no tener que reinstalar el sistema.

    Yo luego de que el sistema reconozca “/home” dentro de su misma partición, redireccionaré las carpetas de archivos personales editando “~/.config/user-dirs.dirs”, con enlace a los archivos contenidos en el disco HDD, que no tienen relacion con el sistema. Claro que también tendria que instalar el Grub en el disco SDD.

    Es posible clonar la particion “/” e incluirle “/home” dentro? Como lo hago?

    Gracias por tu ayuda. Saludos.

  9. Pingback: Manteniment del programari | Blog Alex Gavilan Barrionuevo

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s