Shell -/Bash -Скрипт для удаления старых файлов резервных копий по имени и определенному шаблону

Кажется, это было бы лучше в качестве комментария, но недостаточно репутации....

Самостоятельный -ответ Сивинга больше всего соответствовал тому, что я хотел.

Мне также пришлось добавить dns=noneв секцию [main]/etc/NetworkManager/NetworkManager.conf, так что это выглядит так:

[main]
plugins=ifupdown,keyfile
dns=none

Я только что обновился до xubuntu 18.04 с 14.04, и у меня есть более старая локальная сеть, со многими небольшими изменениями, внесенными за эти годы. Поэтому я хочу, чтобы мой DNS делал то, что я хочу (да, я купил много экземпляров книги Крикета Лиуса за эти годы, начиная со второго издания ).

Между прочим, ранее я добавлял информацию о разрешении DNS, которую я хочу видеть, в файл /etc/resolvconf/resolv.conf.d/head.

Короче говоря, когда-то у меня был рабочий файл /etc/resolv.conf от имени пользователя root:

cat /etc/resolv.conf >> /etc/resolvconf/resolv.conf.d/head

Но теперь я просто редактирую файл /etc/resolv.conf напрямую, и он остается прежним. Посетители моей локальной сети, которые используют systemd/resolvconf, - это ТАКИЕ. Их не существует.

Чтение man 8 resolvconfпомогло. Много. Я не следовал инструкциям по размещению вещей там, где их может найти программа ifup. В основном потому, что в графическом интерфейсе есть целая надстройка, которая уже игнорировалась тем, что делалось во время обновления. Это кажется более серьезной проблемой (WTF, Ubuntu? ).

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

1
30.05.2021, 02:05
1 ответ

Это работает для меня (Дата BSD, а не дата GNU)

#!/usr/local/bin/bash
DIR_BACKUPS='/backups'
KEEP_DAILY=3
KEEP_WEEKLY=14
KEEP_MONTHLY=90

date_keep_daily=$(date -j -v-${KEEP_DAILY}d +"%Y%m%d")
date_keep_weekly=$(date -j -v-${KEEP_WEEKLY}d +"%Y%m%d")
date_keep_monthly=$(date -j -v-${KEEP_MONTHLY}d +"%Y%m%d")

for file in $DIR_BACKUPS/prod*.sql.gz; do
    timestamp=${file#*onwalt}
    timestamp=${timestamp%%.*}
    date_of_file=${timestamp%%_*}
    hour_of_file=${timestamp:(-4):2}
    
    if [[ $date_of_file < $date_keep_monthly ]]; then
        if [[ $(date -jf "%Y%m%d_%H%M" $timestamp +"%d") != 01 ]]; then
            rm $file
        fi
    elif [[ $date_of_file < $date_keep_weekly ]]; then
        if [[ $(date -jf "%Y%m%d_%H%M" $timestamp +"%u") != 1 ]]; then
            rm $file
        fi
    elif [[ $date_of_file < $date_keep_daily ]]; then
        if [[ $(date -jf "%Y%m%d_%H%M" $timestamp +"%H") != 00 ]]; then
            rm $file
        fi
    fi
done
````
0
28.07.2021, 11:28

Теги

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