У меня есть монтирование, где я храню свои резервные копии дб, и избегать его растущий вне управления, я только предназначаю при хранении ценности 30 дней резервных копий, но также и резервных копий, создаваемых каждые 15 дней. Таким образом, как 30 дней истекает, если бы папка была создана на 1-м или 15-м, то я хотел бы, чтобы она осталась также.
Я в настоящее время использую это, чтобы только сохранить резервные копии в течение 30 дней, как я могу опустить папки, созданные на 1-м и 15-м?
find /mnt/clusterfs01-data01/db01/* -type d -ctime +30 -exec rm -rf {} \;
Демонстрационный список каталогов для имен папок.
0 drwx------ 7 root root 324 Nov 11 01:35 2016-11-11_01-31-41
0 drwx------ 7 root root 250 Nov 11 06:25 2016-11-11_06-25-03
Я не возражаю против решения кроме find
.
Для исключения соответствий на основе строки даты и времени имени каталога Вы могли добавить
! \( -name '????-15-??*' -o -name '????-30-??*' \)
или
-not \( -name '????-15-??*' -o -name '????-30-??*' \)
к эти find
команда.
, Если Вы действительно хотите основывать его на метке времени, затем единственный путь, я могу думать, чтобы сделать, который является чем-то как ( примечание , которое я использую mtime
здесь начиная с Вашего touch
, команды, кажется, не изменяют ctime
в моей системе: изменение %Td
к %Cd
для ctime
):
find dir -type d -mtime +30 -printf '%Td\t%p\0' |
while read -rd '' day dir; do
case "$day" in
15|30) ;;
*) echo rm -rf -- "$dir";;
esac
done
Попробуйте этого:
rm -rf $(find /mnt/clusterfs01-data01/db01/* -maxdepth 0 -type d -ctime +30 | grep -v "[0-9]\{4\}-01\|15-[0-9]\{2\}")