¿Es arriesgado cambiar el nombre de la carpeta con 180 GB con el mv
comando?
Tenemos una carpeta /data
que contiene 180GB.
Queremos cambiar el nombre de la /data
carpeta /BD_FILES
con el mv
comando
¿Es seguro hacer eso?
¿Es arriesgado cambiar el nombre de la carpeta con 180 GB con el mv
comando?
Tenemos una carpeta /data
que contiene 180GB.
Queremos cambiar el nombre de la /data
carpeta /BD_FILES
con el mv
comando
¿Es seguro hacer eso?
Respuestas:
Cambiar el nombre de una carpeta es seguro si permanece dentro del mismo sistema de archivos.
Si es un punto de montaje ( /data
parece que podría ser un punto de montaje para mí, verifique esto con mount
), entonces debe hacer algo más que un simple mv
puesto mv /data /BD_FILES
que movería los datos a la partición raíz (que puede no ser lo que quieres que suceda)
Debe desmontar el sistema de archivos, renombrar el directorio ahora vacío, actualizar /etc/fstab
con la nueva ubicación para este sistema de archivos y luego volver a montar el sistema de archivos en la ubicación renombrada.
En otras palabras,
umount /data
mv /data /BD_FILES
(suponiendo /BD_FILES
que no exista, en ese caso, quítelo primero)/etc/fstab
, cambiando el punto de montaje de /data
a/BD_FILES
mount /BD_FILES
Esto no implica copiar ningún archivo, solo cambia el nombre del directorio que actúa como punto de montaje para el sistema de archivos.
Si el cambio de nombre del directorio implica moverlo a un nuevo sistema de archivos (lo que sería el caso si /data
está en un disco mientras /BD_FILES
está en otro disco, algo común si está moviendo cosas a una partición más grande, por ejemplo) , Recomendaría copiar los datos mientras deja el original intacto hasta que pueda verificar que la copia está bien. Puedes hacer esto con
rsync -a /data/ /BD_FILES/
por ejemplo, pero vea el rsync
manual de lo que hace y no hace (no conserva los enlaces duros, por ejemplo).
Una vez que se cambia el nombre de la carpeta, también debe asegurarse de que los procedimientos existentes (programas y usuarios que usan la carpeta, copias de seguridad, etc.) estén al tanto del cambio de nombre.
mv
hacer una rename
llamada al sistema, pero debido a circunstancias no se ha dado cuenta de que va a copiar los archivos y eliminar el original. Si necesito estar absolutamente seguro de que solo se realiza una rename
llamada al sistema y mv
no va a hacer algo "inteligente" a mis espaldas, abro un shell de Python y lo uso os.rename
.
mkdir /BD_FILES && mount -M /data /BD_FILES && rmdir /data
rsync
es que es reiniciable.
rsync -a
conserva casi todos los metadatos, pero no los enlaces duros, las ACL o los atributos extendidos (agregue -HAX
para eso).
rename
comandos con diferentes comportamientos. Creo que es una razón suficiente para no usar el rename
comando cuando quieres estar seguro de lo que va a hacer.
No está cambiando el nombre de cada archivo en el directorio, está cambiando el nombre de un archivo en /. Eso es porque:
Por lo tanto, cambiar el nombre de un directorio, sin importar cuántos archivos o cuántos datos contenga, es trivial.
Si solo cambia el nombre (origen y destino en el mismo sistema de archivos), es simplemente un cambio de nombre de una entrada de directorio. O tiene éxito y el directorio tiene un nuevo nombre, o falla, en cuyo caso nada cambia * .
Si el origen y el destino están en sistemas de archivos diferentes, los datos deben copiarse mv
. Las diferencias en las características del sistema de archivos, como el tamaño máximo de archivo, las limitaciones en los nombres de archivo, etc., pueden causar problemas. Para evitar problemas, primero copia ficheros ( cp
, rsync
, ...) y después de la copia se realiza correctamente, eliminar los archivos en la ubicación original.
* Sin embargo, hay algunos casos de esquina, por ejemplo mencionados en la sección ERRORES en el cambio de nombre man 2
Como han dicho otros, cambiar el nombre de una carpeta no plantea ningún riesgo inherente a los contenidos. Pero hay un tipo diferente de riesgo que puede considerar.
Los procedimientos existentes, los scripts, los accesos directos definidos por el usuario y las configuraciones que hacen referencia a la ubicación original podrían romperse con este cambio, y si las rutas se almacenan en una base de datos, por ejemplo, actualizarlas podría ser un gran trabajo.
Una cosa que puede hacer es hacer un enlace simbólico para el nuevo nombre del directorio, pero dejar el antiguo nombre en su lugar por un tiempo. Eso le dará tiempo para evaluar el impacto de este cambio. Puede eliminar temporalmente el nombre antiguo, ver si hay algún problema y, si lo hay, volver a crear el nombre antiguo para que las personas puedan seguir trabajando mientras usted descubre qué necesita actualizarse.
Un comando como este debería hacerlo:
ln -s /data /BD_FILES
mv thing1 thing2 ; ln --symbolic ./thing2 thing1
. De esa manera tengo el nuevo nombre y puedo probar fácilmente la ausencia del antiguo eliminando el enlace simbólico.
Renombrar es atómico. El único riesgo razonable es que mv
decide copiar todo por alguna razón y se bloquea a la mitad. Si tiene GNU mv
, mv -T
eliminará este riesgo.
mv -T
le dice mv
que se está moviendo a una no carpeta; lo que hará que se niegue a hacer lo mkdir()
que a su vez hará que falle si mueve una carpeta y decidió copiar por alguna razón.
Estuve involucrado en sacudir errores mv -T
mientras trabajaba en mi tesis de maestría hace años. Solía hacer lo incorrecto en muchos casos extremos.
Por otro lado, tiene 180 GB de datos de usuario en la partición raíz. Probablemente quiera mover esto fuera de la partición raíz.
mv
con la-i
opción.