Mostrando entradas con la etiqueta carpetas. Mostrar todas las entradas
Mostrando entradas con la etiqueta carpetas. Mostrar todas las entradas

sábado, 24 de junio de 2023

¿Como muevo el directorio /home a una nueva partición o disco en Ubuntu?

Interrogado en el Aeropuerto de Campodichino durante un viaje en su exilio europeo, Juan Perón explica cómo mover el directorio /home a un disco nuevo en Ubuntu.

Periodistas: General, una corta interrogante y lo dejamos que está ocupado, sabemos que tiene que viajar a Roma. ¿Cómo trasvasamos el directorio /home a otra partición o a un disco nuevo en Ubuntu?

Perón: Vea, es una buena pregunta que surge de una necesidad. Pero esto se debe a la imprevisión, que es la madre de todos los problemas en la vida. El verdadero Conductor ha de saber ver para prever, y eso es algo que no lo dan los ojos, lo da la experiencia, ¿sabe?

Es indudable que en cualquier sistema GNU con Linux que se precie, uno de los directorios más suele crecer en tamaño es su directorio /home. Esto se debe a que en este residen las cuentas de los usuarios que lo operan, y es allí donde lo ocuparán sus documentos y, bien, un sinnúmero de otros ficheros de forma continuada.
 
Otro directorio importante con la misma tesitura es /var, que contiene los ficheros de bitácora ("logs"), cuyo tamaño es dable de verse gradualmente incrementado en la medida que el sistema continúa en uso. Junto a los consabidos logs, pueden residir ficheros web, archivos temporales de cola de impresión, y otros servicios de trabajo. No es de extrañar que se siga la consigna Justicialista "de /var a /home y de /home a /var".

Pues bien señores, cuando estos directorios colman una partición o unidad de almacenamiento en disco, pueden dar lugar a problemáticas críticas en cuanto al sistema de archivo; podrían incluso provocar que el sistema no pueda iniciarse correctamente, y que fuese necesario tronar el escarmiento.

En la Argentina ha de obrarse obrarse con previsión, pues es preferible medir dos veces y cortar una. Pero en otra, esto solo puede percibirse una vez probado el traje: ya se han configurado todos los directorios en el sistema de archivo y particionado, lo que suele acarrear la necesidad de establecer una clara política de solución. En este caso, poco vale la persuasión, ya nos comimos el paquete. Y solo queda elaborar un Plan Quinquenal de redimensionado de partición, o bien directamente instalar un nuevo disco en la máquina y mandár allí el /home.

Instalar y particionar una nueva unidad de disco en Linux

Antes de proceder a explicar lo que me piden, remozaré brevemente cómo agregar un nuevo disco a un equipo de escritorio o servidor que ya camina y se lava los dientes.

Para propósitos didácticos, asumamos el agregado de un disco rígido de estado sólido (nomenclado /dev/sdb de un tamaño de 270GB, al que dividiremos en dos particiones /dev/sdb1 y /dev/sdb2). Normalmente querrían hoy en día uno más grande, pero de momento este disco SSD nos viene bien.

El número de particiones a crear en el mismo así como la tabla de partición se determinarán en el tipo de etiqueta de disco, y en los primeros bytes de espacio en el mismo definen la MBR (Tabla Maestra de Inicio), encargada de almacenar la Tabla de Partición así como el cargador de arranque (en los discos arrancables, naturalmente). Si bien existen muchos tipos de etiquetas, Linux sólo acepta dos: MSDOS MBR (de 516 bytes de tamaño), o GPT (Tabla de Particionado GUID) MBR.

Primero, necesitamos contar con la herramienta parted o fdisk (por si no la tuviésemos en el sistema). Para ello abrimos una terminal con Ctrl+Alt+t e ingresamos el siguiente comando de organización:

sudo apt-get install parted fdisk

Una vez instalada parted, la utilizaremos para configurar el tipo de etiqueta de disco utilizando fdisk. Utilizaremos el nombre de etiqueta GPT en este ejemplo:

sudo parted /dev/sdb mklabel gpt

Nota: fdisk por ahora unicamente soporta la antigua MBR MSDOS, mientras que parted soporta ambas.

En caso de disco nuevo, creamos la primer partición (/dev/sdb1) con un tamaño, a modo de ejemplo, de 106 GB. Reservaríamos 1024 MB (1GB) para la MBR.

sudo parted -a cylinder /dev/sdb mkpart primary 1074MB 107GB

En este comando -a indica la alineación de partición a cilindros en el disco, mkpart crea la partición, primary crea una partición de tipo primaria (los otros valores podrían ser logical o extended), mientras que 1074MB es el comienzo y 107GB es el final de la partición.

Acto seguido revisamos el espacio libre en el disco como sigue:

parted /dev/sdb print free

Ahora crearemos una segunda partición (/dev/sdb2)  con un tamaño, por ejemplo de 154GB

sudo parted -a cylinder /dev/sdb mkpart primary 115GB 208GB

Ahora, configuramos el tipo de sistema de archivo para cada una de las particiones (por ejemplo, el popular ext4 de Linux que recomiendo y el xfs favorecido en servidores de RedHat, que puede venir bien para intercambio):

mkfs.ext4 /dev/sdb1
mkfs.xfs /dev/sdb2 

Para listar todos los dispositivos de almacenamiento adosados al sistema, ingresamos:

parted -l

 

Mover la carpeta /home a una partición dedicada

Pues bien señores. Ya agregado el disco nuevo a la máquina y creadas las particiones necesarias, es hora de trasvasar la carpeta home a una de dichas particiones. Para usar un sistema de archivaje habremos de montarlo en la raíz del sistema utilizando un directorio como punto de montaje: un directorio destino, tal como /home.

Como primer medida para este cometido, listemos el uso del sistema de archivaje de nuestro GNU con Linux gracias al comando df, de esta manera:

df -hl

Comprobada la lista, comenzaremos creando un nuevo directorio de circunstancias /srv/home, donde podremos montar la partición /dev/sdb1 temporalmente:

mkdir -p /srv/home
mount /dev/sdb1 /srv/home

Ahora usamos el comando rsync o cp para copiar el contenido de /home al directorio de circunstancias /srv/home (de este modo trasvasaremos todos los contenidos de usuarios a la partición /dev/sdb1).

Normalmente recomiendo usar rsync para este menester, sobre todo en ambientes de red:

rsync -av /home/* /srv/home/

...pero si no tuviésemos rsync bien podremos usar el comando cp de toda la vida:

cp -aR /home/* /srv/home/

El proceso naturalmente tardará acorde a la masa a copiar. Concluida la copia del contenido de los usuarios, conviene analizar diferencias entre ambos directorios utilizando el comando diff.

diff -f /home /srv/home

Si todo sale bien, no debería existir diferencia alguna entre el original y la copia, asegurándonos del resguardo efectivo.

Si no deseamos contar con un duplicado opcional, podremos borrar todo el contenido en el /home viejo con:

rm -rf /home/*

Ahora, desmontamos /srv/home:

umount /srv/home

...y como último paso montamos la partición /dev/sdb1 a /home, por esta sesión.

mount /dev/sdb1 /home
ls -l /home

Montar /home desde otro disco automáticamente

Ahora bien, debemos tener en cuenta que si bien acabamos de montar el disco /dev/sdb1 como partición de usuario en el sistema de archivos, este cambio sólo operará en esta sesión, en otras palabras, hasta reiniciar la máquina. Para no tener que montar a mano todas las veces que reiniciamos el equipo, será imperioso agregar por única vez una línea de entrada específica a la tabla del sistema de archivaje, el fichero /etc/fstab, lo que volverá permanentes los cambios. De esta manera, toda vez que arranque el sistema, se montará la partición /dev/sdb1 en /home.

En primer lugar obtenemos el identificador UUID del disco con el comando:

sudo blkid /dev/sdb1

El sistema nos devolverá algo como:

/dev/sdb1: UUID="e087e709-20f9-42a4-a4dc-d74544c490a6" TYPE="ext4" PARTLABEL="primary" 
PARTUUID="52d77e5c-0b20-4a68-ada4-881851b2ca99"

Una vez conocida la UUID de nuestra unidad, editamos la tabla /etc/fstab con Nano:

sudo nano /etc/fstab

...y agregamos la siguiente línea (naturalmente, uds. modificarán la línea de acuerdo al resultado obtenido).

UUID=e087e709-20f9-42a4-a4dc-d74544c490a6 /home   ext4   defaults   0   2
Consideremos los campos de la línea anterior para su estudio:
  • UUID – especifica el dispositivo de bloque, podremos alternativamente utilizar el fichero de dispositivo /dev/sdb1 pero no se recomienda, pues puede provocar errores si se cambia la estructura de particiones al cambiar de disco de conector mas adelante.
  • /home – el punto de montaje.
  • etx4 – describes el tipo de sistema de archivaje del dispositivo/partición.
  • defaults – opciones de montaje (el valor significa rw, suid, dev, exec, auto, nouser, and async).
  • 0 – usado por la herramienta de depuración; 0 significa que no hará volcados de depuración si el sistema de archivaje no está presente.
  • 2 – utilizado por la herramienta fsck para descubrir el órden de revisión del sistema de archivaje; este valor significa revisar el dispositivo luego del comprobar el sistema de archivaje raíz..

Guardamos el fichero, y reiniciamos el sistema.

Podremos ejecutar el siguiente comando para ver si el directorio /home se desplazó correctamente a la partición dedicada:

df -l

Con esto ya habrán trasvasado /home a otra partición o, en este caso, otro disco rígido particionado.

Periodistas: Muchas gracias por sus palabras, General.

sábado, 27 de diciembre de 2014

¿Cómo restauro las carpetas del menú Lugares en Ubuntu?

En sus primeros días de exilio panameño, Juan Perón ya ansiaba retornar a la Patria y resolver los problemas que comenzaban a aquejarla por culpa de los militares golpistas. Entre ellos, ya sabía cómo corregir los problemas con las Carpetas del Menú Lugares, en Ubuntu.

(...)
Un buen país es como un buen sistema operativo GNU con Linux: es aquél que puede mantenerse con un mínimo de requerimientos por parte del Conductor. Esto nos permite - aún a miles de kilómetros - digitar los destinos de la Patria a quienes verdaderamente entienden sus vericuetos, aprecian sus secretos, y apelan a la creatividad para extraer lo mejor de sí.
Una ignota camarilla vendepatria no ha hecho más que usurpar el poder, pero no podrán ellos Conducir la República, simplemente podrán direccionar en ciertos casos alguno de los factores productivos. ¿Porqué? Porque el motor de la Patria es el Justicialismo, y mientras ellos tienen el volante y el espejito retrovisor, nosotros tenemos el acelerador, el freno, el embrague y la palanca. Es lógico que mantengamos el control.

Un sistema operativo informático se rige más o menos por los mismos principios: ha de ser dominado por su Conductor y no por otro.

Existen - sin embargo - situaciones perniciosas en las que - casi sin querer - nos veremos obligados a enfrentar problemas simples, pese a lo cual se nos dificulte encontrar con su solución. 

Por ejemplo ¿qué sucede si eliminamos por error alguna de las carpetas del menú Lugares en Ubuntu?

Estas carpetas son ya un clásico en nuestros escritorios, pues nos proveen de fábrica con una lógica organizativa sin la cual se nos dificultaría enormemente el trabajo. Dichas carpetas son:
  • Documentos
  • Escritorio
  • Descargas
  • Imágenes
  • Música
  • Videos
  • Plantillas
  • Público, etc. 
Un conductor observador habrá apreciado que estas carpetas de usuario provistas no son como las demás carpetas de sistema, sino que se muestran con un ícono especial característico (que depende del Theme instalado).


configuración
Si cometemos el error de eliminar una de estas carpetas (lo que no causa problemas definitivos al sistema), podríamos volver a crearlas simplemente como se crea cualquier otra carpeta, siempre que lo hagamos antes de cerrar la sesión.

Si no lo hubiésemos advertido y creamos la carpeta en una sesión posterior, veremos que aún creando esta carpeta en nuestro Usuario, esta no volverá a mostrar ícono identificatorio alguno, sino que nos mostrará uno genérico. Aún mas: la mayoría de los programas emplean por defecto como alojamiento de archivos estas carpetas de usuario, y muchos perderán dicha ubicación, que tendremos que volver a añadir manualmente aún habiendo creado dicha carpeta.

Un ejemplo suele aclararlo todo, como decía Napoleón. Supongamos que heoms eliminado nuestra carpeta /Música.

Esta carpeta es utilizada entre otros programas por los reproductores de música, Clementine, Banshee, Amarok, como carpeta por defecto donde buscar y eventualmente guardar ficheros de música. Si observamos en las Propiedades de Banshee, por ejemplo, veremos que la biblioteca de música de levantará desde la carpeta /Música.

Si eliminamos la carpeta Música, reiniciamos y volvemos a crear dicha carpeta, al buscar o pretender guardar ficheros de música, simplemente el programa nos los volcará en nuestra carpeta raíz de Usuario. Aún asi, si miramos en las preferencias del programa, veremos que sigue diciendo /Música.

¿Entonces que sucede? ¿Porque no los deja en la carpeta /Música cómo hacía antes? 

La razón es bien simple. Al reiniciar sesión o el sistema sin esa carpeta, nuestro sistema operativo GNU con Linux elimina del registro de configuración de Usuario la existencia de dicha carpeta. Los programas que acceden a ese registro ven que la carpeta que ellos esperan ya no existe, y en su defecto utilizarán la carpeta de Usuario. 

Para arreglar esto hay dos posibles soluciones.

Solución Gorila:
Poner la ruta manualmente. Seguiremos poniendo como ejemplo a Banshee: Guardar archivos en...  /home/usuario/Música

Esto lo tendríamos que hacer con cada programa de música, y ésto no soluciona lo del icono identificativo del contenido de la carpeta ya que seguiría mostrándose como una carpeta normal.

Solución Peronista
:
Consiste en rearmar el registro de configuración para dejarlo tal cual lo teníamos. Para ello abrimos la terminal e ingresamos el siguiente Comando de Organización:

nano ~/.config/user-dirs.dirs

Al editar ese archivo, veremos en el caso de haber eliminado la carpeta Música, que ésta no se muestra en la lista de carpetas predeterminadas:

restaurar

Como podéis ver este archivo tiene fácil comprensión y tan solo deberemos añadir el nombre de la carpeta que nos falta en la lista y que había sido eliminado automáticamente al no existir...

de Usuario

...volviendo todo a la normalidad como quiso Juan Perón.

El contenido por defecto del archivo es el siguiente:

XDG_DESKTOP_DIR="$HOME/Escritorio"
XDG_DOWNLOAD_DIR="$HOME/Descargas"
XDG_TEMPLATES_DIR="$HOME/Plantillas"
XDG_PUBLICSHARE_DIR="$HOME/Público"
XDG_DOCUMENTS_DIR="$HOME/Documentos"
XDG_MUSIC_DIR="$HOME/Música"
XDG_PICTURES_DIR="$HOME/Imágenes"
XDG_VIDEOS_DIR="$HOME/Videos"


...cuya lista podemos aumentar o disminuir a nuestro antojo. Guardamos las modificaciones con Ctrl+o y salimos del editor Nano con Ctrl+x.

Acto seguido, y para que todo quede exactamente como antes, arrastraremos la carpeta al panel izquierdo del Nautilus/Caja como muestra la imagen. Ya que sino, no se mostrará en el menú Lugares o en otras aplicaciones con ramas similares.

de carpetas básicas