CentOS 5.5 kullanıyorum ve bir birim içinde büyük miktarda klasör taşımak , onların tutmak istiyorum mtime
.
Bulabildiğim en iyi çözüm şöyle:
cp -p -r source/data target/
rm -rf source/data
NFS paylaşımındaki 1 TB'den fazla veri ile kopyalama işlemi sonsuza kadar sürer. Kopyalamak istemiyorum. Anında hareket etmek istiyorum.
Ben kullanarak bir klasörü taşıdığınızda mv source/data target/
, mtime
klasörün (değil dosyaları) güncel saate ayarlanmış olur. Bunun nedeni, taşıdığım klasörün içeriğinin bu işlem tarafından değiştirilmesidir ( ..
giriş farklı bir inode işaret ediyor).
Aradığım şu kabuk betiği ile geldim 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
Bu da işe yaramadı. Klasör mtime
geri yüklenir, ancak taşıdığım klasördeki tüm klasörler (yalnızca 1 düzey derinliğinde olanlar) mtime
anlamadığım nedenlerle sıfırlanır.
Herkes uygun, verimli ve doğru bir çözüm var mı?
mv
neden olan adımdır. NFS sunucusu aslında bir NetApp depolama alanı, dahili özellikleri hakkında neredeyse hiçbir şey bilmiyorum.
touch
çalışmalıydı. Bu arada daha taşınabilir bir yol olurdu touch -r "$1" reference.tmp; mv -- "$1" "$2"; touch -r reference.tmp -- "$2"; rm reference.tmp
.
stat
taşınabilir olmadığını bilmiyordum .
touch
işe yaramadı. Alt dizinlerin zamanını değiştirenmv
adım mı yoksatouch
adım mı? NFS sunucusunda hangi işletim sistemi var ve (biliyorsanız) hangi dosya sistemi türünü biliyorsunuz?