나는에 CentOS 5.5를 사용하고 있습니다 및 폴더의 큰 금액을 이동하고자하는 하나의 볼륨 내에서 자신을 유지, mtime
.
내가 찾을 수있는 가장 좋은 해결책은 다음과 같습니다.
cp -p -r source/data target/
rm -rf source/data
NFS 공유에 1TB가 넘는 데이터가 있으면 복사하는 데 시간이 오래 걸립니다. 복사하고 싶지 않습니다. 나는 즉각적인 움직임을 원합니다.
내가 사용하여 폴더를 이동할 때 mv source/data target/
의 mtime
폴더 (안 파일)은 현재 시간으로 설정됩니다. 이동중인 폴더의 내용이이 작업으로 수정되기 때문입니다 ( ..
항목이 다른 inode를 가리키고 있음).
나는 다음과 같은 쉘 스크립트를 생각해 냈다 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
글쎄, 그건 작동하지 않았다. 폴더 mtime
가 복원되지만 내가 이동하는 폴더 내의 모든 폴더 (1 레벨 깊이의 폴더 만)는 mtime
이해할 수없는 이유로 재설정됩니다.
누구나 적절하고 효율적이며 올바른 솔루션을 가지고 있습니까?
mv
문제를 발생 단계. NFS 서버는 실제로 NetApp 스토리지이므로 내부에 대해서는 거의 알지 못합니다.
touch
가 있었을 것입니다. 그건 그렇고 더 휴대용 방법이 될 것입니다 touch -r "$1" reference.tmp; mv -- "$1" "$2"; touch -r reference.tmp -- "$2"; rm reference.tmp
.
stat
이식성 이 없다는 것을 몰랐습니다 .
touch
가 없었 는지 궁금 합니다. 그것은인가mv
단계 또는touch
하위 디렉토리의 mtime에 변경 단계? NFS 서버에 어떤 OS가 있으며 어떤 파일 시스템 유형 (알고 있다면)이 있습니까?