Archive-rotate » История » Версия 2
Андрей Волков, 2013-03-22 15:07
| 1 | 1 | Андрей Волков | h1. Ротация архивов по расписанию |
|---|---|---|---|
| 2 | |||
| 3 | 2 | Андрей Волков | h2. pg_cleanup_backedup_archives.sh |
| 4 | 1 | Андрей Волков | |
| 5 | <pre> |
||
| 6 | <code class="bash"> |
||
| 7 | #!/bin/bash |
||
| 8 | |||
| 9 | DAYS_BEFORE_LAST_BACKUP=3 |
||
| 10 | |||
| 11 | if [ -z "${2}" ]; then |
||
| 12 | echo "USEAGE: ${0##*/} /path/to/pg_archive backup-report.file" >&2 |
||
| 13 | exit 1 |
||
| 14 | fi |
||
| 15 | |||
| 16 | PG_ARCHIVE_DIRECTORY="${1}" |
||
| 17 | BACKUP_REPORT_FILE="${2}" |
||
| 18 | |||
| 19 | if [ ! -w "${PG_ARCHIVE_DIRECTORY}" ]; then |
||
| 20 | echo "Archive directory '${PG_ARCHIVE_DIRECTORY}' is not writable" >&2 |
||
| 21 | exit 1 |
||
| 22 | fi |
||
| 23 | |||
| 24 | if [ ! -e "${BACKUP_REPORT_FILE}" ]; then |
||
| 25 | echo "File '${BACKUP_REPORT_FILE}' not found" >&2 |
||
| 26 | exit 1 |
||
| 27 | fi |
||
| 28 | |||
| 29 | SEARCH_DAYS_AGO=$[($(date +'%s')-$(stat -c '%Y' "${BACKUP_REPORT_FILE}"))/24/3600+${DAYS_BEFORE_LAST_BACKUP}] || exit 1 |
||
| 30 | |||
| 31 | OLD_BACKUPS=$(find "${PG_ARCHIVE_DIRECTORY}" -type f -name "*.backup" -mtime +"${SEARCH_DAYS_AGO}" -printf '%f\n') || exit 1 |
||
| 32 | |||
| 33 | if [ -n "${OLD_BACKUPS}" ]; then |
||
| 34 | pg_archivecleanup "${PG_ARCHIVE_DIRECTORY}" $(echo "${OLD_BACKUPS}" |sort | tail -n 1) || exit 1 |
||
| 35 | |||
| 36 | for NAME in ${OLD_BACKUPS}; do |
||
| 37 | rm -f "${PG_ARCHIVE_DIRECTORY}/${NAME}" || exit 1 |
||
| 38 | done |
||
| 39 | fi |
||
| 40 | </code> |
||
| 41 | </pre> |