Используйте logrotate для хранения 7 ежедневных, 4 еженедельных и 12 ежегодных резервных копий дб

С zsh:

vim -- "${(f)$(<filelist)}"

С любой подобной Границе оболочкой (включая zsh):

(IFS='
'; set -f; exec vim -- `cat filelist`)

С GNU xargs:

xargs -d '\n' --arg-file=filelist vim --
7
02.03.2014, 20:27
3 ответа
[118545] Я думаю, что ваши целевые файлы должны иметь другое название как для недели, так и для месяца. Если вы посмотрите на статусный файл, он хранит [118825]целевое имя [118826] + [118827]Дата [118828], чтобы он знал, когда цель была запущена в последний раз.

Это система вращения журнала, а не система резервного копирования.

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

  1. Это может помочь при запуске логротации с опцией -d, чтобы посмотреть, какие решения она принимает?
  2. Или используйте другую цель
  3. Но вы хотите, чтобы месяц выполнялся до недели, а неделя - до дня (rsnapshot - это встроено в rsnapshot).[118556]*.
3
27.01.2020, 20:14
[118539]Проблема в том, что вы используете одно и то же имя лог-файла в каждой записи.

Еженедельное вращение происходит после того, как оно прошло больше недели с момента последнего вращения лог-файла. Так как файл поворачивается каждый день, вы никогда не попадете на еженедельный запуск. (По той же самой причине вы никогда не доберетесь до выполнения montly.)

Итак, чтобы сохранить еженедельное и ежемесячное резервное копирование, вам нужно изменить имя файла [118817]до [118818] выполнения лог-файла. Самый простой способ - создать отдельное задание cron, которое будет копировать [118819]db.sql[118820] на [118821]db.sql.weekly[118822] раз в неделю и копировать его на [118823]db.sql.monthly[118824] раз в месяц. После этого вы можете изменить конфигурацию логротата на чтение

6
27.01.2020, 20:14

Я только что наткнулся на эту проблему и случайно прочитал эту ветку.

Во время своих исследований я нашел другой способ решения проблемы дублирования пути в файле конфигурации logrotate:

Создание символических ссылок менее чем болезненно и отлично обманывает синтаксический анализатор logrotate, поскольку вы представляете ему разные пути для доступа к одним и тем же файлам.

В файловой системе:

$ls -l
mysql.monthly -> mysql/
mysql.weekly -> mysql/
mysql

В файле конфигурации logrotate:

/path/mysql/*.sql.gz {
    daily
    rotate 8
    copy
    compress
    ifempty
    missingok
    olddir /path/mysql/archives
    sharedscripts
    nocreate
}

/path/mysql.weekly/*.sql.gz {
        weekly
        copy
        rotate 4
        compress
        ifempty
        missingok
        olddir /path/mysql/archives/1-Semaine
        nocreate
}

/path/mysql.monthly/*.sql.gz {
        monthly
        copy
        rotate 12
        compress
        ifempty
        missingok
        olddir /path/mysql/archives/2-Mois
}
8
27.01.2020, 20:14

Теги

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