Jenkins setup has a lot of cool features and configuration.
It has ‘project-based security’, it has parametrized projects, multiple source code management blocks per project and fairly extensive tests implemented with several build steps.
Of course, we do not want to lose them, so we make backups often.
The commands we use for the backup are the following.
jenkins_folder="/var/lib/jenkins/"; backup_folder="$HOME/jenkins/`date +%F`"; mkdir -p "$backup_folder"; (cd "$jenkins_folder"/jobs/; find . -mindepth 3 -type d -regex '.*/[0-9]*$' -print) | sed 's|./|jobs/|' | sudo rsync --archive --exclude 'workspace/*' --exclude-from=- "$jenkins_folder" "$backup_folder";
Explanation of commands:
backup_folder="$HOME/jenkins/`date +%F`";we used the
$HOMEvariable instead of the tilde
~as this would create a folder in the current directory called
~instead of creating a new folder called
jenkinsin the home directory.
mkdir -p "$backup_folder";instructs
mkdirto create all parent folders needed to create our destination folder.
(cd "$jenkins_folder"/jobs/; find . -mindepth 3 -type d -regex '.*/[0-9]*$' -print)navigates to the directory of
jenkinsbefore performing the search, this way the result file names will be relative to the installation location which we need later to pass to
Then we search for all folders which their name is numeric and they at least on depth 3. We filter by depth as well to avoid matching folders directly in the jobs folder.
sed 's|./|jobs/|'replaces the prefix
jobs/to match the relative path from where
rsyncwill work from
sudo rsync --archive --exclude 'workspace/*' --exclude-from=- "$jenkins_folder" "$backup_folder";it will copy everything from
$jenkins_folderto the folder
$backup_folderwhile excluding the data in workspace and the folders matched from
find(the job build folders).
rsyncto read from
stdinthe list of files to exclude.
This post is also available in: Greek