Estoy usando CentOS 5.5 y me gustaría mover una gran cantidad de carpetas dentro de un volumen , conservando su mtime
.
La mejor solución que pude encontrar es así:
cp -p -r source/data target/
rm -rf source/data
Con más de 1 TB de datos en un recurso compartido NFS, la copia lleva una eternidad. No quiero copiar Quiero un movimiento instantáneo
Cuando muevo una carpeta usando mv source/data target/
, la mtime
carpeta (no los archivos) se configura a la hora actual. Esto se debe a que esta operación modifica el contenido de la carpeta que estoy moviendo (la ..
entrada apunta a un inodo diferente).
Se me ocurrió un siguiente script de shell que llamé mv_preserve_mtime.sh
:
#!/bin/bash
# Moves source folder to target folder.
# You are responsible for making sure the target does not exist, otherwise this blows up
export timestamp=`stat -c %y $1`
mv "$1" "$2"
touch --date="${timestamp}" $2
Bueno, eso tampoco funcionó. La carpeta mtime
se restaura, pero todas las carpetas dentro de la carpeta que muevo (solo las de 1 nivel de profundidad) se mtime
restablecen por razones que no entiendo.
¿Alguien tiene una solución adecuada, eficiente y correcta?
mv
paso que causa problemas. El servidor NFS es en realidad un almacenamiento de NetApp, no sé prácticamente nada sobre sus componentes internos.
touch
lo contrario debería haber funcionado. Por cierto, sería una forma más portátil touch -r "$1" reference.tmp; mv -- "$1" "$2"; touch -r reference.tmp -- "$2"; rm reference.tmp
.
stat
no era portátil.
touch
no funcionó. ¿Es elmv
paso o eltouch
paso que cambia el tiempo m de los subdirectorios? ¿Qué sistema operativo está en el servidor NFS y (si lo sabe) qué tipo de sistema de archivos?