Korzystam z CentOS 5.5 i chciałbym przenieść dużą liczbę folderów w jednym woluminie , zachowując je mtime.
Najlepsze rozwiązanie, jakie mogłem znaleźć, to:
cp -p -r source/data target/
rm -rf source/data
Przy ponad 1 TB danych w udziale NFS kopiowanie trwa wiecznie. Nie chcę kopiować. Chcę natychmiastowego ruchu.
Kiedy przenoszę folder za pomocą mv source/data target/, mtimefolder (nie pliki) zostaje ustawiony na bieżącą godzinę. Jest tak, ponieważ zawartość folderu, który przenoszę, zostaje zmodyfikowana przez tę operację ( ..pozycja wskazuje na inny i-węzeł).
Wymyśliłem następujący skrypt powłoki, który zadzwoniłem 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
Cóż, to też nie działało. Folder mtimezostał przywrócony, ale wszystkie foldery w folderze, które przenoszę (tylko te o głębokości 1 poziomu) otrzymują mtimereset z przyczyn, których nie rozumiem.
Czy ktoś ma właściwe, wydajne i prawidłowe rozwiązanie?
mvkrok powoduje kłopoty. Serwer NFS jest w rzeczywistości pamięcią NetApp, nie wiem praktycznie nic o jego wewnętrznych elementach.
touchpowinno było działać. Nawiasem mówiąc, byłby to bardziej przenośny sposób touch -r "$1" reference.tmp; mv -- "$1" "$2"; touch -r reference.tmp -- "$2"; rm reference.tmp.
statjest przenośny.
touchnie zadziałała. Czy jest tomvkrok, czytouchkrok, który zmienia mtime podkatalogów? Jaki system operacyjny znajduje się na serwerze NFS i (jeśli wiesz) jaki typ systemu plików?