Sto usando CentOS 5.5 e vorrei spostare una grande quantità di cartelle all'interno di un volume , mantenendo il loro mtime.
La migliore soluzione che ho potuto trovare è questa:
cp -p -r source/data target/
rm -rf source/data
Con oltre 1 TB di dati su una condivisione NFS, la copia richiede un'eternità. Non voglio copiare. Voglio una mossa istantanea.
Quando sposto una cartella usando mv source/data target/, la mtimecartella (non i file) viene impostata sull'ora corrente. Questo perché il contenuto della cartella che sto spostando viene modificato da questa operazione (la ..voce punta a un altro inode).
Mi è venuta in mente una seguente shell script che ho chiamato 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
Bene, neanche quello ha funzionato. La cartella mtimeviene ripristinata, ma tutte le cartelle all'interno della cartella che sposto (solo quelle a 1 livello di profondità) ottengono il loro mtimeripristino per motivi che non capisco.
Qualcuno ha una soluzione adeguata, efficiente e corretta?
mvpassaggio che causa problemi. Il server NFS è in realtà un archivio NetApp, non so praticamente nulla dei suoi interni.
touchavrebbe dovuto funzionare. A proposito sarebbe un modo più portatile touch -r "$1" reference.tmp; mv -- "$1" "$2"; touch -r reference.tmp -- "$2"; rm reference.tmp.
statnon era portatile.
touchnon ha funzionato. È ilmvpassaggio o iltouchpassaggio che modifica il mtime delle sottodirectory? Quale sistema operativo si trova sul server NFS e (se si conosce) quale tipo di file system?