O que exatamente você quer dizer com a idade de um diretório? Tempo desde a criação de seu inode? Eu sugiro que você use find
para identificar os diretórios que você deseja mover. Por exemplo. assim:
#!/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}
Se outras pessoas pudessem escrever disk2
, então este código poderia ser vulnerável a alguns tipos de ataques de links simbólicos se alguém criasse os links simbólicos certos rápido o suficiente. Não tenho certeza.
Eu sugiro que você escreva o script em algum arquivo e o execute a partir do cronjob. Você cria um conjob com crontab -e
(verifique se definiu sua variável de ambiente EDITOR
apropriadamente), seguindo o formato descrito em man crontab
.