Що саме ви маєте на увазі під віком директорії? Час з моменту створення його inode? Я пропоную вам використовувати find
, щоб визначити каталоги, які потрібно перемістити. Напр. подобається це:
#!/bin/bash
res=0
cd /disk1/data/
find -type d -ctime +1 -print0 -prune | \
while IFS= read -r -d '' i; do
if [[ ${i} == */* ]]; then # need to ensure subdir exists
if ! mkdir -p "/disk2/data/${i%/*}; then # error creating dir?
res=1
continue
fi
fi
rm -rf "/disk2/data/${i}" # make sure target does not exist
mv "${i}" "/disk2/data/${i}" # move stuff
done
exit ${res}
Якщо іншим людям дозволено писати disk2
, потім цей код може бути вразливими до деяких видів атаки символічних посилань, якщо хтось створить правильні символічні посилання досить швидко. Не впевнений.
Я пропоную вам написати сценарій до якогось файлу і виконати його з cronjob. Ви створюєте conjob з crontab -e
(переконайтеся, що ви встановили EDITOR
відповідну зміну середовища), дотримуючись формату, описаного в man crontab
.