#!/bin/bash
set -e
export LC_ALL=C
export TZ=Europe/Moscow
# папка с бэкапами
backups_dir="/backups"
# количество дней с момента создания файла/папки, после которого удалять бэкапы
backups_expire_days=30
# название файла (можно использовать маски), который нужно исключить из процесса удаления
filename_to_exclude="myfile.bin"
find "${backups_dir}/"* -ctime "+${backups_expire_days}" \( ! -name "${filename_to_exclude}" \) -exec rm -rf {} \;
# можно подставлять сразу несколько название файлов, пример:
# \( ! -name "myfile.bin" ! -name "*.log" \)
! Данный скрипт выполняет
rm -rf
, что опасно. Поэтому несколько раз перепроверьте, прежде чем выполнять в той или иной папке.