Я використовую CentOS 5.5 і хотів би перемістити велику кількість папок в одному томі , зберігаючи їх mtime
.
Найкраще рішення, яке я міг знайти, таке:
cp -p -r source/data target/
rm -rf source/data
Маючи понад 1 ТБ даних на NFS, копіювання триває назавжди. Я не хочу копіювати. Я хочу миттєвий хід.
Коли я переміщую папку за допомогою 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 і (якщо ви знаєте), яку тип файлової системи?