forked from ungleich-public/ccollect
Reorder: All checks being done in the same place
All configurations are checked in the same place Signed-off-by: Nico Schottelius <nico@ikn.schottelius.org>
This commit is contained in:
parent
cbf1b7cf0e
commit
483cfee90c
1 changed files with 22 additions and 26 deletions
48
ccollect.sh
48
ccollect.sh
|
@ -278,13 +278,14 @@ while [ "${i}" -lt "${no_sources}" ]; do
|
||||||
fi
|
fi
|
||||||
|
|
||||||
#
|
#
|
||||||
# Read Configuration
|
# Read / create configuration
|
||||||
#
|
#
|
||||||
backup="${CSOURCES}/${name}"
|
backup="${CSOURCES}/${name}"
|
||||||
c_source="${backup}/source"
|
c_source="${backup}/source"
|
||||||
c_dest="${backup}/destination"
|
c_dest="${backup}/destination"
|
||||||
c_pre_exec="${backup}/pre_exec"
|
c_pre_exec="${backup}/pre_exec"
|
||||||
c_post_exec="${backup}/post_exec"
|
c_post_exec="${backup}/post_exec"
|
||||||
|
c_marker=".ccollect-marker"
|
||||||
for opt in exclude verbose very_verbose rsync_options summary delete_incomplete \
|
for opt in exclude verbose very_verbose rsync_options summary delete_incomplete \
|
||||||
remote_host rsync_failure_codes mtime quiet_if_down ; do
|
remote_host rsync_failure_codes mtime quiet_if_down ; do
|
||||||
if [ -f "${backup}/${opt}" -o -f "${backup}/no_${opt}" ]; then
|
if [ -f "${backup}/${opt}" -o -f "${backup}/no_${opt}" ]; then
|
||||||
|
@ -301,11 +302,6 @@ while [ "${i}" -lt "${no_sources}" ]; do
|
||||||
TSORT="t"
|
TSORT="t"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
#
|
|
||||||
# Marking backups: If we abort it's not removed => Backup is broken
|
|
||||||
#
|
|
||||||
c_marker=".ccollect-marker"
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# First execute pre_exec, which may generate destination or other parameters
|
# First execute pre_exec, which may generate destination or other parameters
|
||||||
#
|
#
|
||||||
|
@ -320,7 +316,7 @@ while [ "${i}" -lt "${no_sources}" ]; do
|
||||||
fi
|
fi
|
||||||
|
|
||||||
#
|
#
|
||||||
# Source checks
|
# Source configuration checks
|
||||||
#
|
#
|
||||||
if [ ! -f "${c_source}" ]; then
|
if [ ! -f "${c_source}" ]; then
|
||||||
_exit_err "Source description \"${c_source}\" is not a file. Skipping."
|
_exit_err "Source description \"${c_source}\" is not a file. Skipping."
|
||||||
|
@ -331,16 +327,6 @@ while [ "${i}" -lt "${no_sources}" ]; do
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
#
|
|
||||||
# Verify source is up and accepting connections before deleting any old backups
|
|
||||||
#
|
|
||||||
if ! rsync "${source}" >/dev/null 2>"${TMP}" ; then
|
|
||||||
if [ ! -f "${c_quiet_if_down}" ]; then
|
|
||||||
cat "${TMP}"
|
|
||||||
fi
|
|
||||||
_exit_err "Source ${source} is not readable. Skipping."
|
|
||||||
fi
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Destination is a path
|
# Destination is a path
|
||||||
#
|
#
|
||||||
|
@ -368,23 +354,18 @@ while [ "${i}" -lt "${no_sources}" ]; do
|
||||||
fi
|
fi
|
||||||
export remote_host
|
export remote_host
|
||||||
|
|
||||||
#
|
|
||||||
# check for existence / use real name
|
|
||||||
#
|
|
||||||
( pcmd cd "$ddir" ) || _exit_err "Cannot change to ${ddir}. Skipping."
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Parameters: ccollect defaults, configuration options, user options
|
# Parameters: ccollect defaults, configuration options, user options
|
||||||
#
|
#
|
||||||
|
|
||||||
#
|
#
|
||||||
# rsync standard options
|
# Rsync standard options
|
||||||
#
|
#
|
||||||
set -- "$@" "--archive" "--delete" "--numeric-ids" "--relative" \
|
set -- "$@" "--archive" "--delete" "--numeric-ids" "--relative" \
|
||||||
"--delete-excluded" "--sparse"
|
"--delete-excluded" "--sparse"
|
||||||
|
|
||||||
#
|
#
|
||||||
# exclude list
|
# Exclude list
|
||||||
#
|
#
|
||||||
if [ -f "${c_exclude}" ]; then
|
if [ -f "${c_exclude}" ]; then
|
||||||
set -- "$@" "--exclude-from=${c_exclude}"
|
set -- "$@" "--exclude-from=${c_exclude}"
|
||||||
|
@ -409,7 +390,7 @@ while [ "${i}" -lt "${no_sources}" ]; do
|
||||||
fi
|
fi
|
||||||
|
|
||||||
#
|
#
|
||||||
# extra options for rsync provided by the user
|
# Extra options for rsync provided by the user
|
||||||
#
|
#
|
||||||
if [ -f "${c_rsync_options}" ]; then
|
if [ -f "${c_rsync_options}" ]; then
|
||||||
while read line; do
|
while read line; do
|
||||||
|
@ -418,7 +399,22 @@ while [ "${i}" -lt "${no_sources}" ]; do
|
||||||
fi
|
fi
|
||||||
|
|
||||||
#
|
#
|
||||||
# Check for incomplete backups
|
# Check: source is up and accepting connections (before deleting old backups!)
|
||||||
|
#
|
||||||
|
if ! rsync "${source}" >/dev/null 2>"${TMP}" ; then
|
||||||
|
if [ ! -f "${c_quiet_if_down}" ]; then
|
||||||
|
cat "${TMP}"
|
||||||
|
fi
|
||||||
|
_exit_err "Source ${source} is not readable. Skipping."
|
||||||
|
fi
|
||||||
|
|
||||||
|
#
|
||||||
|
# Check: destination exists?
|
||||||
|
#
|
||||||
|
( pcmd cd "${ddir}" ) || _exit_err "Cannot change to ${ddir}. Skipping."
|
||||||
|
|
||||||
|
#
|
||||||
|
# Check: incomplete backups?
|
||||||
#
|
#
|
||||||
pcmd ls -1 "${ddir}/"*".${c_marker}" 2>/dev/null | while read marker; do
|
pcmd ls -1 "${ddir}/"*".${c_marker}" 2>/dev/null | while read marker; do
|
||||||
incomplete="$(echo ${marker} | sed "s/\\.${c_marker}\$//")"
|
incomplete="$(echo ${marker} | sed "s/\\.${c_marker}\$//")"
|
||||||
|
|
Loading…
Reference in a new issue