Created
October 25, 2018 14:45
-
-
Save alimli/1a5c7e6167c67878ef8bf63236cb44be to your computer and use it in GitHub Desktop.
Backup Jira Attachments and PostgreSQL database, keep n latest and delete older
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/bin/bash | |
| CONFIG_FILE='/etc/jira-backup.conf' | |
| TIMESTAMP=$(date +'%Y-%m-%d-%H-%M') | |
| if [ -e ${CONFIG_FILE} ]; then | |
| source ${CONFIG_FILE} | |
| else | |
| echo "Error: ${CONFIG_FILE} missing" | |
| exit 1 | |
| fi | |
| ATTACHMENT_BACKUP_OUTPUT="${BACKUP_DIR}/jira-attachments-${TIMESTAMP}.tar" | |
| ATTACHMENT_BACKUP_REMOVE="${BACKUP_DIR}/jira-attachments-*.tar" | |
| DATABASE_DUMP_OUTPUT="${BACKUP_DIR}/jira-database-dump-${TIMESTAMP}.dump" | |
| DATABASE_DUMP_REMOVE="${BACKUP_DIR}/jira-database-dump-*.dump" | |
| function setup() { | |
| if [ ! -d "${BACKUP_DIR}" ]; then | |
| echo "Creating ${BACKUP_DIR}" | |
| mkdir -p "${BACKUP_DIR}" | |
| fi | |
| } | |
| function remove_old_files() { | |
| if [ -n "${KEEP_DAYS}" ]; then | |
| find $1 -mtime +${KEEP_DAYS} -delete -print | |
| fi | |
| } | |
| function remove_old_attachment_backups() { | |
| if [ -n "${ATTACHMENTS_PATH}" ]; then | |
| echo "Removing old Jira attachment backups" | |
| remove_old_files "$ATTACHMENT_BACKUP_REMOVE" | |
| fi | |
| } | |
| function remove_old_database_dumps() { | |
| if [ -n "$DB_NAME" ]; then | |
| echo "Removing old Jira database dumps" | |
| remove_old_files "$DATABASE_DUMP_REMOVE" | |
| fi | |
| } | |
| function backup_attachments() { | |
| if [ -z "${ATTACHMENTS_PATH}" ]; then | |
| echo "Skipping Jira attachments backup" | |
| else | |
| echo "Backing up Jira attachments" | |
| # In order suppress "/bin/tar: Removing leading `/' from member names" warning | |
| # -C / parameter added and leading / removed from ATTACHMENTS_PATH | |
| # See details : https://unix.stackexchange.com/a/61760 | |
| /bin/tar -cpf ${ATTACHMENT_BACKUP_OUTPUT} -C / ${ATTACHMENTS_PATH} | |
| echo "Created ${ATTACHMENT_BACKUP_OUTPUT}" | |
| fi | |
| } | |
| function dump_database() { | |
| if [ -z "$DB_NAME" ]; then | |
| echo "Skiping Jira database dump." | |
| else | |
| echo "Dumping Jira database" | |
| # Don't pass hostname and username since we'll run this postgres user in local machine | |
| # /usr/bin/pg_dump -U "${DB_USER}" "${DB_NAME}" -h "${DB_HOST}" > "${DATABASE_DUMP_OUTPUT}" | |
| /usr/bin/pg_dump -Fc "${DB_NAME}" > "${DATABASE_DUMP_OUTPUT}" | |
| echo "Created ${DATABASE_DUMP_OUTPUT}" | |
| fi | |
| } | |
| function main() { | |
| echo "Backing up Jira" | |
| setup | |
| remove_old_attachment_backups | |
| remove_old_database_dumps | |
| backup_attachments | |
| dump_database | |
| } | |
| main |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment