Merge branch 'master' of git://github.com/telmich/ccollect

This commit is contained in:
jll2 2009-06-21 14:06:18 -07:00
commit 5477b39a25
5 changed files with 76 additions and 58 deletions

10
CREDITS
View file

@ -1,11 +1,15 @@
Thanks go to the following people: Thanks go to the following people (sorted by alphabet):
* the whole #cLinux channel
- for testing and debugging (those I mean should know ;-)
* Alexey Maximov * Alexey Maximov
- for finding return-value and shell limitation bugs - for finding return-value and shell limitation bugs
* #cLinux IRC channel on irc.freenode.org
- for testing and debugging (those I mean should know ;-)
* Daniel Aubry * Daniel Aubry
- for reporting many hints - for reporting many hints
* Jens-Christoph Brendel
- Added automatic backup manager (contrib/jbrendel-autobackup)
* John Lawless
- A lot of patches and some very interesting discussions.
* Markus Meier * Markus Meier
- for finding a really simple solution for choosing the right backup to - for finding a really simple solution for choosing the right backup to
clone from: Make it independent of the interval, simply choose the last clone from: Make it independent of the interval, simply choose the last

2
README
View file

@ -17,6 +17,8 @@ ccollect was inspired by rsnapshot [1], which has some problems:
Please use tools/report_success.sh to report success, if you are successfully Please use tools/report_success.sh to report success, if you are successfully
using ccollect. using ccollect.
Have a look at doc/HACKING, if you plan to change ccollect.
A small try to visualize the differences in a table: A small try to visualize the differences in a table:
+---------------+-------------------------------------------------------------+ +---------------+-------------------------------------------------------------+

View file

@ -149,8 +149,11 @@ i=1
no_sources=0 no_sources=0
# #
# Create source "array" # Capture options and create source "array"
# #
WE=""
ALL=""
NO_MORE_ARGS=""
while [ "$#" -ge 1 ]; do while [ "$#" -ge 1 ]; do
eval arg=\"\$1\"; shift eval arg=\"\$1\"; shift
@ -166,7 +169,7 @@ while [ "$#" -ge 1 ]; do
ALL=1 ALL=1
;; ;;
-v|--verbose) -v|--verbose)
VERBOSE=1 set -x
;; ;;
-p|--parallel) -p|--parallel)
PARALLEL=1 PARALLEL=1
@ -190,13 +193,6 @@ done
# also export number of sources # also export number of sources
export no_sources export no_sources
#
# be really, really, really verbose
#
if [ "${VERBOSE}" = 1 ]; then
set -x
fi
# #
# Look, if we should take ALL sources # Look, if we should take ALL sources
# #
@ -283,16 +279,15 @@ while [ "${i}" -lt "${no_sources}" ]; do
backup="${CSOURCES}/${name}" backup="${CSOURCES}/${name}"
c_source="${backup}/source" c_source="${backup}/source"
c_dest="${backup}/destination" c_dest="${backup}/destination"
c_exclude="${backup}/exclude"
c_verbose="${backup}/verbose"
c_vverbose="${backup}/very_verbose"
c_rsync_extra="${backup}/rsync_options"
c_summary="${backup}/summary"
c_pre_exec="${backup}/pre_exec" c_pre_exec="${backup}/pre_exec"
c_post_exec="${backup}/post_exec" c_post_exec="${backup}/post_exec"
f_incomplete="delete_incomplete" for opt in exclude verbose very_verbose rsync_options summary delete_incomplete remote_host ; do
c_incomplete="${backup}/${f_incomplete}" if [ -f "${backup}/$opt" -o -f "${backup}/no_$opt" ]; then
c_remote_host="${backup}/remote_host" eval c_$opt=\"${backup}/$opt\"
else
eval c_$opt=\"${CDEFAULTS}/$opt\"
fi
done
# #
# Marking backups: If we abort it's not removed => Backup is broken # Marking backups: If we abort it's not removed => Backup is broken
@ -304,16 +299,6 @@ while [ "${i}" -lt "${no_sources}" ]; do
# #
begin_s=$(date +%s) begin_s=$(date +%s)
#
# unset possible options
#
EXCLUDE=""
RSYNC_EXTRA=""
SUMMARY=""
VERBOSE=""
VVERBOSE=""
DELETE_INCOMPLETE=""
_techo "Beginning to backup" _techo "Beginning to backup"
# #
@ -408,13 +393,6 @@ while [ "${i}" -lt "${no_sources}" ]; do
( pcmd cd "$ddir" ) || _exit_err "Cannot change to ${ddir}. Skipping." ( pcmd cd "$ddir" ) || _exit_err "Cannot change to ${ddir}. Skipping."
#
# Check whether to delete incomplete backups
#
if [ -f "${c_incomplete}" -o -f "${CDEFAULTS}/${f_incomplete}" ]; then
DELETE_INCOMPLETE="yes"
fi
# NEW method as of 0.6: # NEW method as of 0.6:
# - insert ccollect default parameters # - insert ccollect default parameters
# - insert options # - insert options
@ -442,10 +420,12 @@ while [ "${i}" -lt "${no_sources}" ]; do
fi fi
# #
# Verbosity for rsync # Verbosity for rsync, rm, and mkdir
# #
if [ -f "${c_vverbose}" ]; then VVERBOSE=""
if [ -f "${c_very_verbose}" ]; then
set -- "$@" "-vv" set -- "$@" "-vv"
VVERBOSE="-v"
elif [ -f "${c_verbose}" ]; then elif [ -f "${c_verbose}" ]; then
set -- "$@" "-v" set -- "$@" "-v"
fi fi
@ -453,33 +433,25 @@ while [ "${i}" -lt "${no_sources}" ]; do
# #
# extra options for rsync provided by the user # extra options for rsync provided by the user
# #
if [ -f "${c_rsync_extra}" ]; then if [ -f "${c_rsync_options}" ]; then
while read line; do while read line; do
set -- "$@" "$line" set -- "$@" "$line"
done < "${c_rsync_extra}" done < "${c_rsync_options}"
fi fi
# #
# Check for incomplete backups # Check for incomplete backups
# #
pcmd ls -1 "$ddir/${INTERVAL}"*".${c_marker}" > "${TMP}" 2>/dev/null pcmd ls -1 "$ddir/${INTERVAL}"*".${c_marker}" 2>/dev/null | while read marker; do
incomplete="$(echo ${marker} | sed "s/\\.${c_marker}\$//")"
i=0 _techo "Incomplete backup: ${incomplete}"
while read incomplete; do if [ -f "${c_delete_incomplete}" ]; then
eval incomplete_$i=\"$(echo ${incomplete} | sed "s/\\.${c_marker}\$//")\" _techo "Deleting ${incomplete} ..."
i=$(($i+1)) pcmd rm $VVERBOSE -rf "${incomplete}" || \
done < "${TMP}" _exit_err "Removing ${incomplete} failed."
pcmd rm $VVERBOSE -f "${marker}" || \
j=0 _exit_err "Removing ${marker} failed."
while [ "$j" -lt "$i" ]; do
eval realincomplete=\"\$incomplete_$j\"
_techo "Incomplete backup: ${realincomplete}"
if [ "${DELETE_INCOMPLETE}" = "yes" ]; then
_techo "Deleting ${realincomplete} ..."
pcmd rm $VVERBOSE -rf "${ddir}/${realincomplete}" || \
_exit_err "Removing ${realincomplete} failed."
fi fi
j=$(($j+1))
done done
# #

3
contrib/README Normal file
View file

@ -0,0 +1,3 @@
This directory contains patches or programs contributed by others
which are either not yet integrated into ccollect or may be kept
seperated generally.

37
doc/HACKING Normal file
View file

@ -0,0 +1,37 @@
Hello Hacker,
I really appreciate your interest in hacking this software, but
I am kind of critical when seeing patches. Thus I created this
file to give you some hints of my thinking quirks.
Submitting patches
------------------
Make my life easier, make your life easier, use a version control system (vcs).
For this software the preferred vcs is git. Clone the latest repo, create
a new local branch (git checkout -b <branchname>) write down your ideas.
When you're done, push all your stuff out to some public repo and drop a
mail to the mailinglist, what you did and where to get it.
Introduce a feature or change behaviour
---------------------------------------
Uhh, fancy! You have had a great idea, then it's time to change
the major version, so others know that something changed.
If the configuration format is changed, add a script to tools/
to allow users upgrade their configuration to this major version.
And now comes the most difficult part: Add documentation. Nobody
benefits from your cool feature, if it is not known. I know, writing
documentation is not so much fun, but you also expect good documentation
for this software, don't you?
If you think my thinking quirks must be corrected
-------------------------------------------------
See above ("Submitting patches") and submit a patch to this file.
Thanks for reading.