Проект

Общее

Профиль

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>