У меня есть сценарий, 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
Я использую два решения этой проблемы:
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
Существует множество примеров скриптлетов, которые показывают, как это сделать, просто поиск в Интернете примеров «чередования резервных копий».
Кроме того, у вас, вероятно, есть хотя бы шаблонный скрипт на той самой машине, на которой вы пытаетесь это сделать: большинство дистрибутивов имеют возможность ротации журналов, вы также можете найти вдохновение в этих сценариях: -)
Так что посмотрите в crontab, чтобы увидеть, упоминается ли там ротация журналов, или проверьте документацию для вашей ОС.