Как повернуть старые файлы журнала в уникальном файле file.tar.gz?

проверьте этот код

это просто синтаксический анализ вывода ping

bash-4.1$ cat ping.awk
#!/usr/bin/awk -f
#
# analyzes ping output on Linux and looks for missed returns
# based on icmp_seq
#
# ping output is expected on stdin
#

BEGIN { num = 0 }
$5 ~ /icmp_seq=/ {
    split($5, res, /=/);
    if (res[2] != num + 1) {
        print "missed between", num, "and", res[2] }
    num = res[2];
}


bash-4.1$ cat ping_result.txt
64 bytes from 192.168.56.11: icmp_seq=38 ttl=64 time=1.23 ms
64 bytes from 192.168.56.11: icmp_seq=52 ttl=64 time=0.831 ms
64 bytes from 192.168.56.11: icmp_seq=53 ttl=64 time=0.679 ms


bash-4.1$ awk -f ping.awk ping_result.txt
missed between 0 and 38
missed between 38 and 52

2
30.06.2017, 17:14
2 ответа

Вы можете сделать следующее:

find. -name '*log' -mtime +30 -print0 | tar -czvf backup.tgz --remove-files --null -T -

С:

  • findопции :
    • -name '*log' -mtime +30:выбирает файлы журнала старше 30 дней
    • -print0:вывести в стандартный вывод полное имя файла, за которым следует нулевой символ
  • tarопции :
    • --remove-files:удалять файлы после их добавления в архив
    • --null:считывает пустые значения -завершенные имена (, отправленныеfind -print0)
    • -T -:читает имена файлов из вывода stdin(find)
1
27.01.2020, 22:18

Если вы используете регистратор Linux и можете добавить конфигурацию ротации в каталог /etc/logrotate.d , в котором можно указать размер, формат и т. д...

Пример:

/var/log/test.log {
    rotate 30
    weekly
    size=30k
    compress 
}

Вот шпаргалка по скриптам.

2
27.01.2020, 22:18

Теги

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