Skip to content

Instantly share code, notes, and snippets.

@kei2100
Created December 8, 2013 05:27
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kei2100/7853699 to your computer and use it in GitHub Desktop.
Save kei2100/7853699 to your computer and use it in GitHub Desktop.
Jenkins backup script
#!/bin/bash
set -e
JENKINS_HOME=
BACKUP_LOCAL_DIR=backup
RETENTION_DAYS=14
TODAY=`date +'%Y-%m-%d'`
BACKUP_REMOTE_SERVER=
BACKUP_REMOTE_USER=
BACKUP_REMOTE_DIR=
SCP_MBPS=8192
cd ${JENKINS_HOME}
rm -rf ${BACKUP_LOCAL_DIR}/${TODAY}
mkdir -p ${BACKUP_LOCAL_DIR}/${TODAY}/
echo "===== copy lib ====="
cp -vR --parents lib/ ${BACKUP_LOCAL_DIR}/${TODAY}
echo "===== copy bin ====="
cp -vR --parents bin/ ${BACKUP_LOCAL_DIR}/${TODAY}
echo "===== copy jenkins plugins ====="
cp -vR --parents plugins/*.jpi ${BACKUP_LOCAL_DIR}/${TODAY}
echo "===== copy jenkins config ====="
cp -vR --parents *.xml ${BACKUP_LOCAL_DIR}/${TODAY}
echo "===== copy jenkins job config ====="
cp -vR --parents jobs/*/*.xml ${BACKUP_LOCAL_DIR}/${TODAY}
echo "===== copy userContent ====="
cp -vR --parents userContent/ ${BACKUP_LOCAL_DIR}/${TODAY}
echo "===== create tarball ====="
cd ${BACKUP_LOCAL_DIR}/${TODAY}
tar cfz batch_jenkins.${TODAY}.tar.gz ./*
echo "===== scp tarball ====="
ssh ${BACKUP_REMOTE_USER}@${BACKUP_REMOTE_SERVER} "mkdir -p ${BACKUP_REMOTE_DIR}"
scp -l ${SCP_MBPS} -p batch_jenkins.${TODAY}.tar.gz ${BACKUP_REMOTE_USER}@${BACKUP_REMOTE_SERVER}:${BACKUP_REMOTE_DIR}
rm batch_jenkins.${TODAY}.tar.gz
echo "===== remove old archive at local server ====="
find ${JENKINS_HOME}/${BACKUP_LOCAL_DIR}/* -mtime ${RETENTION_DAYS} | xargs rm -rf
echo "===== remove old archive at remote server ====="
ssh ${BACKUP_REMOTE_USER}@${BACKUP_REMOTE_SERVER} \
"find ${BACKUP_REMOTE_DIR}/* -mtime ${RETENTION_DAYS} | xargs rm -f"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment