Я використовую 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 і (якщо ви знаєте), яку тип файлової системи?