Как сценарий может циклично выполниться в течение 30 дней?

У меня есть сценарий, backup.sh, который создает резервное копирование базы данных MySQL и затем SCPs он к удаленному серверу. Это работает отлично, и я могу выполнить это однажды в день с помощью crontab без проблем.

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

Ниже содержание моего backup.sh файла, с некоторой ключевой информацией, очевидно, удалил:

#!/bin/bash
today=`date +%Y-%m-%d.%H%M%S`

mysqldump -u rails -p******** rails > backups/backup-$today.sql
sshpass -p '********' scp backups/backup-$today.sql m***d@******.co.uk:custom_backups/backup-$today.sql
0
задан 3 February 2015 в 13:37
3 ответа

Я использую два решения этой проблемы:

  1. создавайте по одной резервной копии на каждый день, как упоминалось выше. Проблема в том, что у вас не может быть старых резервных копий.
  2. создайте резервные копии в каталоге, а затем - с помощью скрипта - я сохраню (например):
    • резервные копии за последние 30 дней
    • резервные копии с каждого воскресенья не старше 1 года
    • резервные копии с каждого 1 дня месяца
    • все остальное - удалить.
0
ответ дан 4 December 2019 в 17:04

Kan u ssh op afgeleë masjien gebruik? Indien ja, kan u script remover.sh

#!/bin/bash
sshpass -p '********' ssh m***d@******.co.uk: "ls -t custom_backups/backup-*.sql | sed -n -e '31,1000 s#^#custom_backups/#p' | xargs rm -f"

skryf. Hoe dit werk?

ls -t custom_backups/backup-*.sql

Lys alle lêers wat volgens tyd gesorteer is - oudste laaste

| sed -n -e '31,1000 s#^#custom_backups/#p'

sed voeg gidsvoorvoegsel by [ custom_backups / ) en druk (danksy p skakelaar) slegs reëls (lêername) van reeks 31 tot 1000 uit.

| xargs rm -f

xargs verwyder gelyste lêers. -f skakelaar waarborg daar sal geen foute wees as die lys leeg is nie, dws. u het 30 of minder rugsteunlêers.

Die skrif verwyder die oudste lêers slegs as u minstens 30 rugsteun op die afgeleë masjien het

1
ответ дан 4 December 2019 в 17:04

Существует множество примеров скриптлетов, которые показывают, как это сделать, просто поиск в Интернете примеров «чередования резервных копий».

Кроме того, у вас, вероятно, есть хотя бы шаблонный скрипт на той самой машине, на которой вы пытаетесь это сделать: большинство дистрибутивов имеют возможность ротации журналов, вы также можете найти вдохновение в этих сценариях: -)

Так что посмотрите в crontab, чтобы увидеть, упоминается ли там ротация журналов, или проверьте документацию для вашей ОС.

0
ответ дан 4 December 2019 в 17:04

Теги

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