сквид access.log удаляет записи, более старые, чем 6 месяцев

Я не думаю, что можно сделать это через завихрение. Необходимо было бы работать curl -l для списка содержания каталога считайте соответствия, вид по дате и проблема удаленный rm команды с curl -Q.

Если Ваша система поддерживает FUSE (большинство делает), я рекомендую смонтировать удаленный каталог как файловую систему. Этот подход позволяет Вам разделить свою проблему на две отдельных задачи: получите доступ к удаленным файлам путем монтирования их и работы над ними, как Вы были бы на локальных файлах. Можно использовать curlftpfs для удаленного монтирования.

mkdir ftp.example.com
curlftpfs ftp.example.com ftp.example.com
cp -p /path/to/local/file ftp.example.com/remote/dir/

Теперь, для нахождения самых старых файлов в каталоге самый легкий путь состоит в том, чтобы использовать zsh и его спецификаторы шарика. Работа в каталоге ftp.example.com/remote/dir/:

files=(*(mm))                # Om = sort by date, youngest first
if ((${#files} > 5)); then
  rm $files[-1]              # remove the last file
  # rm $files[6,-1]          # remove all but the 5 youngest files
fi

2
16.09.2013, 14:24
2 ответа

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

Это все обрабатывается logrotate программа. Следующая конфигурация должна сделать приблизительно, что Вы хотите. Это сохранит прошлые 6 месяцев записей в журнале от /var/squid/logs/access.log, вращение файлов еженедельно.

/var/squid/logs/access.log {
    weekly
    rotate 26
    missingok
    nocreate
    sharedscripts
    postrotate
        test ! -e /var/run/squid.pid || /usr/sbin/squid -k rotate
    endscript
}

Если Вы действительно заботитесь о данных в Ваших файлах журнала, Вы не должны изменять их.

5
27.01.2020, 21:57
  • 1
    я хочу выполнить точку доступа Wi-Fi и из-за данных preversation закон в Германии, я должен сохранить файлы журнала в течение 6 месяцев. Я знаю, что лучшим решением был бы сервер системного журнала, но я хочу хранить данные локально на жестком диске. –  TaXXoR 16.09.2013, 14:46
  • 2
    предлагаемое решение будет работать на который: это сохранит регистрируемые данные в течение 26 недель (= 6 месяцев) и затем удалит его. Вы могли также изменить его, чтобы сохранить файлы журнала некоторое время дольше, только быть уверенными, что у Вас действительно есть журналы, когда их требуют. –  umläute 16.09.2013, 14:59
  • 3
    Это также возможный предоставить версии newsyslog ? –  TaXXoR 16.09.2013, 15:12

Решение с newsyslog:

# logfile                 [owner:group]    mode    count    when   flags
/var/squid/logs/access.log root             644     26       $W0D0  JN

Файл журнала будет повернут 26 раз, прежде чем он будет удален. $W0D0 указывает, что я буду поворачиваться каждое воскресенье в 0:00 час.

Флаг J указывает, что newsyslog должен сжать повернутое использование файла bzip2.

Флаг N указывает, что нет никакого процесса, который должен быть сообщен.

0
27.01.2020, 21:57

Теги

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