Удалите старые файлы, но сохраняйте тот каждую неделю/месяц/год

Необходимо добавить еще одну опцию при монтировании nfs , мы всегда используем это

Пример

10.0.0.1:/export/share /mnt/shared nfs _netdev,noatime,intr,auto 0 0

Это опции монтирования: 'noatime' улучшает скорость доступа, и 'автоматический' говорит Rpi aumount доли NFS на запуске.

от man mount

_netdev файловая система находится на устройстве, которое требует доступа к сети (раньше препятствовал тому, чтобы система пыталась смонтировать эти файловые системы до сети, был включен в системе).

6
14.09.2014, 02:00
2 ответа

Хорошо, я бы сделал это, предполагая, что журналы создаются ежедневно:

#!/bin/sh
day=$(date +%u)#To get a day of the week
day_num=$(date +%d) #To get the current day
month=$(date +%m) #To get the current month
year=$(date +%Y) #Get current year
date=$(date +%Y%m%d) #Get current date

if [ $day -eq 7 ] #Saving only Sunday log
then
    sunday_day=$(date +%Y%m%d) # Saving sunday day
    for (( i = 1; i < 7; i++ )) 
    do
        past_day=$(date -d "-$i day" +%Y%m%d)
        rm "alfred_"$past_date"_*" #Delete six older files so it deletes up to last monday
    done
fi

if [ $day_num -eq 1 ]
then
    for (( h = 2; h <= 31; h ++))
    do
        first_day=$(date +%Y%m%d)
        past_month=$(date -d "-1 month" +%Y%m$h) 
        if [ $past_month -ne $sunday ]
        then
            rm "alfred_"$past_month"_*" #Delete all last month but keep sundays' backup and the first day of that month
        fi
    done
fi

В течение года хранить только первый журнал января

0
27.01.2020, 20:30

Вы хотите logrotate http://linuxcommand.org/man_pages/logrotate8.html .

Это, вероятно, уже в вашей системе. Вам просто нужно настроить его. Однако это в основном для целей очистки старых файлов журналов, и я не знаю, можете ли вы настроить его, чтобы сохранить один файл.

Что вы можете сделать

Создать несколько каталогов log , log.weekly , , , а log.yearly

Журнал Быть, где все файлы журнала. Создание

  • Неиженежественная работа CRON, которая копирует последний файл журнала из журнала в log.weekly ,
  • Ежемесячное задание CRON, которое копирует последний файл журнала из Журнал в log.monthly , и
  • Годовое задание CRON, которое копирует последний файл журнала из log на . Возможно .

Затем настроить Logrotate соответственно для различных каталогов.

    #!/bin/bash

    NOW=$(date +%


    ls -rt1 ${LOG} | while read FILE
    do
        TVAL=$(stat --printf %W ${LOG}/${FILE})
        if [ $(ls -1 ${LOG.WEEKLY} | wc -l) ] -eq 0 ]
        then
             cp ${LOG}/${FILE} ${LOG.WEEKLY}/${FILE}
        else
             LAST_WEEKLY=$(ls -t1 ${LOG.WEEKLY} | head -n 1 | stat --printf %W)
             if [ $((${TVAL}-${LAST_WEEKLY})) -gt $((60*60*24*7)) ]
             then
                 cp ${LOG}/${FILE} ${LOG.WEEKLY}/${FILE}
             fi
        fi
   # repeat the above logic for month and year
   rm ${LOG}/${FILE} 
   done
3
27.01.2020, 20:30

Теги

Похожие вопросы