Saya menggunakan CentOS 5.5 dan ingin memindahkan sejumlah besar folder dalam satu volume , mempertahankannya mtime.
Solusi terbaik yang bisa saya temukan adalah seperti ini:
cp -p -r source/data target/
rm -rf source/data
Dengan lebih dari 1TB data pada bagian NFS, penyalinan akan berlangsung selamanya. Saya tidak ingin menyalin. Saya ingin bergerak instan.
Ketika saya memindahkan folder menggunakan mv source/data target/, mtimefolder (bukan file) diatur ke waktu saat ini. Ini karena isi folder yang saya pindahkan dimodifikasi oleh operasi ini ( ..entri menunjuk ke inode yang berbeda).
Saya datang dengan skrip shell berikut yang saya sebut 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
Yah, itu tidak berhasil juga. Folder mtimedipulihkan, tetapi semua folder di dalam folder yang saya pindahkan (hanya yang sedalam 1 level) mendapatkan pengaturan mtimeulang karena alasan yang saya tidak mengerti.
Adakah yang punya solusi yang tepat, efisien dan benar?
mvlangkah yang menyebabkan masalah. Server NFS sebenarnya adalah penyimpanan NetApp, saya hampir tidak tahu apa-apa tentang internalnya.
touchseharusnya bekerja. Omong-omong cara yang lebih portabel akan touch -r "$1" reference.tmp; mv -- "$1" "$2"; touch -r reference.tmp -- "$2"; rm reference.tmp.
statitu tidak portabel.
touchtidak berhasil. Apakah inimvlangkah atautouchlangkah yang mengubah waktu subdirektori? OS apa yang ada di server NFS, dan (jika Anda tahu) tipe sistem file apa?