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 mtimecarpeta (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 mtimese restaura, pero todas las carpetas dentro de la carpeta que muevo (solo las de 1 nivel de profundidad) se mtimerestablecen por razones que no entiendo.
¿Alguien tiene una solución adecuada, eficiente y correcta?
mvpaso que causa problemas. El servidor NFS es en realidad un almacenamiento de NetApp, no sé prácticamente nada sobre sus componentes internos.
touchlo 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.
statno era portátil.
touchno funcionó. ¿Es elmvpaso o eltouchpaso 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?