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/
, mtime
folder (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 mtime
został przywrócony, ale wszystkie foldery w folderze, które przenoszę (tylko te o głębokości 1 poziomu) otrzymują mtime
reset z przyczyn, których nie rozumiem.
Czy ktoś ma właściwe, wydajne i prawidłowe rozwiązanie?
mv
krok powoduje kłopoty. Serwer NFS jest w rzeczywistości pamięcią NetApp, nie wiem praktycznie nic o jego wewnętrznych elementach.
touch
powinno 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
.
stat
jest przenośny.
touch
nie zadziałała. Czy jest tomv
krok, czytouch
krok, który zmienia mtime podkatalogów? Jaki system operacyjny znajduje się na serwerze NFS i (jeśli wiesz) jaki typ systemu plików?