LINUX.ORG.RU

Приверно такой вот скрипт. В догонку создает отчетик простенький.
MAXDAYS=14
DIRPREFIX=/home/exports/exgate/temp
REPDIRPREFIX=/home/exports/reports/tmpclear-$(damkdir -m 0755 -p ${REPDIRPREFIX}


RPNAME=${REPDIRPREFIX}/rep-$(date +%Y%m%d).txt
CURSECDS=$(date +%s)
LACD=$(( ${CURSECDS} - ${MAXDAYS}*24*3600 ))
te +%Y)/$(date +%m)


# -----------------------------------------------------
# Find and delete files with old timestamps.
# -----------------------------------------------------
(find ${DIRPREFIX} -type f -printf '%T@ %TY%Tm%Td%TH%TM %p\n') | while read acsd acsdf fn
do
if [ ${acsd} -le ${LACD} ]; then
echo -e "DEL:F: ${fn} - AS EXPIRED DATE ${acsdf}\r" >> ${RPNAME}
rm -f "${fn}"
else
EXPDAYS=$((${acsd} - ${LACD}))
EXPDAYS=$((${EXPDAYS}/24/3600))
echo -e "SKIP: $fn. THEY HAVE A ${EXPDAYS} DAYS REMAINED.\r" >> ${RPNAME}
fi
done

# -----------------------------------------------------
# Find and delete links with old timestamps.
# -----------------------------------------------------
(find ${DIRPREFIX} -type l -printf '%T@ %TY%Tm%Td%TH%TM %p\n') | while read acsd acsdf fn
do
if [ ${acsd} -le ${LACD} ]; then
echo -e "DEL:L: ${fn} - AS EXPIRED DATE ${acsdf}\r" >> ${RPNAME}
rm -f "${fn}"
else
EXPDAYS=$((${acsd} - ${LACD}))
EXPDAYS=$((${EXPDAYS}/24/3600))
echo -e "SKIP: $fn. THEY HAVE A ${EXPDAYS} DAYS REMAINED.\r" >> ${RPNAME}
fi
done


# -----------------------------------------------------
# Find and delete empty directories.
# -----------------------------------------------------
(find ${DIRPREFIX} -type d -empty -printf '%T@ %b %d %p\n') | while read acsd szb fdetpth fn
do
if [ ${fdetpth} -le 0 ]; then
echo -e "BASEDIR: ${fn} - NOT PROCESSED \r" >> ${RPNAME}
else
echo -e "RMDIR - ZERO SIZE: ${fn}, ${fdetpth}\r" >> ${RPNAME}
rmdir "${fn}"
fi
done

z2v
()
Ответ на: комментарий от z2v

Завидую вашему упорству :-)

$EXPDAY='+14'

1. Файлы и линки + отчет:

find /dir \( -type f -o -type l \) -mtime $EXPDAY -printf 'Expired and ' \
-exec rm -v {} \; 2>&1 >files_links.report

2. Пустые каталоги + отчет:

find /dir -depth -empty -type d -mtime $EXPDAY -printf 'Expired and ' \
-exec rmdir -v {} \; 2>&1 >empty_dirs.report

sdio ★★★★★
()
Ответ на: комментарий от sdio

А то!
1996 год, по-моему. Slackware 3.5 Первые шаги в Linux,
И до сих пор руки не дошли переделать!


z2v
()
Ответ на: комментарий от sdio

Да... Вспомнил, почему так длинно и запутано.
Если это шара самбы (типа временного мусоросборника),
и если она используется пользователями windows, то работает только
вот такой "длинный" способ. Не знаю уж почему - но вот так.
Предположение - в неправильной обработке find длинных имен файлов.

Можете ради интереса запустить регулярный ежедневный процесс и понаблюдать.


z2v
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.