#!/usr/bin/env bash # # source - functions acting on the source host. # # Copyright 2015 - 2019 Einhard Leichtfuß # # This file is part of rsync-backup. # # rsync-backup is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as published # by the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # rsync-backup is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public License # along with rsync-backup. If not, see . # # Set up a new local mirror file tree on the source. # # requires: assert_is_dir, create_dir, replace_symlink, # $src_path, $src_mirror_reldir, # $RSYNC, ${rsync_args[@]}, ${filter_args[@]}, # $DATEFMT, # function src_prepare { local mirrors_dir="${src_path}/${src_mirror_reldir}" local old_mirror="${mirrors_dir}/old" local new_mirror="${mirrors_dir}/new" local tmp_mirror="${mirrors_dir}/tmp" local bakdate assert_is_dir "$src_path" || return $? message 'Create mirror of the source tree...' if [[ ! -d "$mirrors_dir" ]] then create_dir "$mirrors_dir" || return $? create_dir "$tmp_mirror" || return $? ln -s 'none' "$old_mirror" || return $RET_ERROR else replace_symlink "$new_mirror" "$old_mirror" || return $? create_dir "$tmp_mirror" || return $? fi "$RSYNC" \ --exclude="/${src_mirror_reldir}/***" \ "${rsync_args[@]}" \ "${filter_args[@]}" \ --link-dest="$src_path" \ "${src_path}/" "$tmp_mirror" || return $RET_ERROR bakdate=`date +"$DATEFMT"` mv "$tmp_mirror" "${mirrors_dir}/${bakdate}" || return $RET_ERROR ln -s "$bakdate" "$new_mirror" || return $RET_ERROR message 'Finished creating mirror of the source tree.' return $RET_SUCCESS } # vi: ft=bash ts=2 sw=2 noet