Mi /usr
carpeta necesita ser movida a una nueva partición. ¿Cómo puedo hacer esto sin borrar el contenido?
¿Se puede hacer esto mientras Ubuntu se está ejecutando, o necesito usar el LiveCD para esto?
Mi /usr
carpeta necesita ser movida a una nueva partición. ¿Cómo puedo hacer esto sin borrar el contenido?
¿Se puede hacer esto mientras Ubuntu se está ejecutando, o necesito usar el LiveCD para esto?
Respuestas:
Sería más seguro usar un Live CD, pero podría hacer lo siguiente:
/usr
no cambie mientras lo hace./etc/fstab
para que /usr
se monte en el próximo reinicioVea a continuación los detalles de cada paso.
Tenga en cuenta que no puede montar la nueva partición /usr
mientras se ejecuta, ya que habrá muchos archivos /usr
abiertos.
Me gustaría utilizar cp -a
. -a
Es la opción de archivo. Desde la página del manual :
-a, --archive
same as -dR --preserve=all
...
-d same as --no-dereference --preserve=links
...
-P, --no-dereference
never follow symbolic links in SOURCE
...
--preserve[=ATTR_LIST]
preserve the specified attributes (default:
mode,ownership,timestamps), if possible additional attributes:
context, links, xattr, all
...
-R, -r, --recursive
copy directories recursively
Necesita conocer el UUID de su nueva partición. Puede ver el mapeo haciendo:
$ ls -l /dev/disk/by-uuid/
Y luego agregue esta línea a /etc/fstab
:
UUID=634c31a5-e27c-4e33-ac67-2e22491a30c2 /usr ext4 defaults 0 2
Cambie el UUID a su UUID y cambie ext4
para que sea el tipo de sistema de archivos que está utilizando; debe saber esto si ha configurado la partición.
Después del reinicio, /usr
la nueva partición montada ocultará los archivos antiguos de la partición raíz /usr
. Pero podemos utilizar algunos trucos de enlace de montaje para acceder a los archivos antiguos y luego eliminarlos.
$ sudo mount --bind / /mnt
$ sudo rm -rf /mnt/usr/*
$ sudo umount /mnt
Pero un ligero error de escritura (digamos, presionar Enter cuando solo había escrito sudo rm -rf /mnt
) podría causar un desastre, por lo que solo usaría este método si tuviera mucha confianza en lo que estaba haciendo, realmente no podría lidiar con ningún tiempo de inactividad o no tuviera acceso físico a la máquina y, por lo tanto, no se pudo iniciar un CD en vivo o una memoria USB en vivo.
rsync
lugar
rsync -avz
. Rsync le permite reiniciar copias y, por lo general, debe usarse cuando se mueve entre particiones, dispositivos de bloque o máquinas.
cp
. No conserva los ENLACES DUROS. Esto interrumpirá las actualizaciones de paquetes en el futuro. Por ejemplo /usr/bin/s2p
y /usr/bin/psed
es el mismo archivo. Mudarse cp
creará 2 versiones independientes de ese archivo. Hazlo en su rsync -aH
lugar.
rsync -avH a/ b
diferente rsync -avH a b
, copiando el contenido de la carpeta a
(es decir, a/*
) en el primer caso y la carpeta en sí en el segundo. Asegúrate de usar la barra aquí.
Como la mayoría de las bibliotecas que se usan están en / usr, no recomendaría mover este directorio mientras se ejecuta Ubuntu. De hecho, probablemente reciba mensajes de error cuando intente hacer esto. Por lo tanto, lo mejor es usar el LiveCD.
Puede utilizar varias posibilidades para mover / copiar los archivos cp, rsync, etc. Desea asegurarse de que se creen enlaces simbólicos y no solo se copien. cp y rsync tienen opciones para esto.
Después de mover los archivos a la otra partición, debe agregar otro montaje en / etc / fstab para montar la nueva partición en / usr.
Atención: no tengo idea de lo que estoy haciendo, solo estoy copiando comandos y haciendo lo sugerido por los demás. Esta puede ser la forma incorrecta de hacerlo, pero funciona para mí (al menos por ahora).
Así es como lo hice (siguiendo la respuesta de Hamish y los comentarios):
Copie todos los archivos de la partición recién creada (reemplace con la ubicación de su partición, debería ser similar a la mía):
rsync -avz /usr /media/aleksandar/750b84e2-e65f-4309-ade5-5af0033a937c
En este punto, me di cuenta de que copió todo en la /usr
carpeta de la partición, lo que no va a funcionar , así que copié todo (con el administrador de archivos) de esa carpeta a la raíz de la partición, y lo eliminé vacío carpeta después.
Editar /etc/fstab
(igual que en la respuesta de Hamish, por supuesto, reemplazar con su UUID)
UUID=634c31a5-e27c-4e33-ac67-2e22491a30c2 /usr ext4 defaults 0 2
Un paso que resultó no ser muy acertado: cambié el nombre de la /usr
partición montada actualmente a /usrBACKUP
, solo para saber que, cuando reinicio el sistema, de hecho se reinicia en la partición recién creada, y no en la anterior. . Después de eso, todo falló en la pantalla, y tuve que apagarlo presionando la tecla de encendido (genio como soy) . Omita este paso si no desea fallar su sistema.
Reiniciar el sistema
Después de reiniciar, abra System Monitor o una aplicación similar para ver si su nueva /usr
partición está montada y para verificar con seguridad si todo salió según lo planeado.
Después de verificar que todo esté bien, puede eliminar su /usr
partición anterior. Guardaré el mío por si algo sale mal.
sudo mount -a
permitir que siga funcionando?
rsync
es mucho más adecuado para esto quecp