Что именно вы подразумеваете под возрастом каталога? Время с момента создания своего инода? Я предлагаю вам использовать 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. Вы создаете соединение с помощью crontab -e
(убедитесь, что вы правильно установили переменную окружения EDITOR
), следуя формату, описанному в man crontab
.