mirror of
https://0xacab.org/liberate/backupninja.git
synced 2024-09-20 07:31:41 +02:00
r241@um: micah | 2005-12-27 15:21:17 -0500
Updated rdiff-backup to do vserver selection using lib/vservers
This commit is contained in:
parent
bdc92b87e7
commit
918ac576d1
@ -19,6 +19,8 @@ version 0.9.2 -- unreleased
|
|||||||
added duplicity ninjahelper, including:
|
added duplicity ninjahelper, including:
|
||||||
a nice menu to choose the Vservers to backup (thanks to
|
a nice menu to choose the Vservers to backup (thanks to
|
||||||
lib/vserver)
|
lib/vserver)
|
||||||
|
updated rdiff ninjahelper to include Vserver selection (thanks to
|
||||||
|
lib/vserver)
|
||||||
added man/ninjahelper.1 man page
|
added man/ninjahelper.1 man page
|
||||||
duplicity handler: now possible to use different keys to encrypt and
|
duplicity handler: now possible to use different keys to encrypt and
|
||||||
sign
|
sign
|
||||||
|
@ -3,9 +3,114 @@ HELPERS="$HELPERS rdiff:incremental_remote_filesystem_backup"
|
|||||||
declare -a rdiff_includes
|
declare -a rdiff_includes
|
||||||
declare -a rdiff_excludes
|
declare -a rdiff_excludes
|
||||||
|
|
||||||
do_rdiff_dest() {
|
# FUNCTIONS
|
||||||
|
|
||||||
|
do_rdiff_host_includes() {
|
||||||
set -o noglob
|
set -o noglob
|
||||||
formBegin "$rdiff_title"
|
# choose the files to backup
|
||||||
|
REPLY=
|
||||||
|
while [ -z "$REPLY" ]
|
||||||
|
do
|
||||||
|
formBegin "$rdiff_title - host system: includes"
|
||||||
|
for ((i=0; i < ${#rdiff_includes[@]} ; i++))
|
||||||
|
do
|
||||||
|
formItem include ${rdiff_includes[$i]}
|
||||||
|
done
|
||||||
|
formItem include
|
||||||
|
formItem include
|
||||||
|
formItem include
|
||||||
|
formDisplay
|
||||||
|
[ $? = 0 ] || return
|
||||||
|
unset rdiff_includes
|
||||||
|
rdiff_includes="$REPLY"
|
||||||
|
done
|
||||||
|
set +o noglob
|
||||||
|
}
|
||||||
|
|
||||||
|
do_rdiff_vserver() {
|
||||||
|
# choose the vservers to backup (into $selected_vservers)
|
||||||
|
choose_one_or_more_vservers "$rdiff_title"
|
||||||
|
[ $? = 0 ] || return 1
|
||||||
|
|
||||||
|
set -o noglob
|
||||||
|
# choose the files to backup
|
||||||
|
REPLY=
|
||||||
|
|
||||||
|
while [ -z "$REPLY" ]; do
|
||||||
|
formBegin "$rdiff_title - vsincludes (backup these directories from every vserver)"
|
||||||
|
[ -z "$rdiff_vsincludes" ] && rdiff_vsincludes="$rdiff_default_includes"
|
||||||
|
|
||||||
|
for i in $rdiff_vsincludes; do
|
||||||
|
formItem include "$i"
|
||||||
|
done
|
||||||
|
|
||||||
|
formItem include ""
|
||||||
|
formItem include ""
|
||||||
|
formItem include ""
|
||||||
|
formDisplay
|
||||||
|
[ $? = 0 ] || return 1
|
||||||
|
rdiff_vsincludes="$REPLY"
|
||||||
|
done
|
||||||
|
|
||||||
|
set +o noglob
|
||||||
|
}
|
||||||
|
|
||||||
|
do_rdiff_excludes() {
|
||||||
|
set -o noglob
|
||||||
|
formBegin "$rdiff_title: excludes"
|
||||||
|
for ((i=0; i < ${#rdiff_excludes[@]} ; i++))
|
||||||
|
do
|
||||||
|
formItem exclude ${rdiff_excludes[$i]}
|
||||||
|
done
|
||||||
|
|
||||||
|
formItem exclude
|
||||||
|
formItem exclude
|
||||||
|
formDisplay
|
||||||
|
|
||||||
|
[ $? = 0 ] || return
|
||||||
|
unset rdiff_excludes
|
||||||
|
rdiff_excludes="$REPLY"
|
||||||
|
set +o noglob
|
||||||
|
}
|
||||||
|
|
||||||
|
do_rdiff_src() {
|
||||||
|
choose_host_or_vservers_or_both "$rdiff_title"
|
||||||
|
[ $? = 0 ] || return 1
|
||||||
|
case $host_or_vservers in
|
||||||
|
'host')
|
||||||
|
do_rdiff_host_includes
|
||||||
|
[ $? = 0 ] || return 1
|
||||||
|
;;
|
||||||
|
'vservers')
|
||||||
|
do_rdiff_vserver
|
||||||
|
[ $? = 0 ] || return 1
|
||||||
|
;;
|
||||||
|
'both')
|
||||||
|
do_rdiff_host_includes
|
||||||
|
[ $? = 0 ] || return 1
|
||||||
|
do_rdiff_vserver
|
||||||
|
[ $? = 0 ] || return 1
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
return 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
do_rdiff_excludes
|
||||||
|
[ $? = 0 ] || return 1
|
||||||
|
_src_done="(DONE)"
|
||||||
|
setDefault dest
|
||||||
|
}
|
||||||
|
|
||||||
|
do_rdiff_dest() {
|
||||||
|
|
||||||
|
local replyconverted
|
||||||
|
local thereply
|
||||||
|
|
||||||
|
set -o noglob
|
||||||
|
REPLY=
|
||||||
|
while [ -z "$REPLY" -o -z "$rdiff_directory" -o -z "$rdiff_host" -o -z "$rdiff_user" ]
|
||||||
|
do
|
||||||
|
formBegin "$rdiff_title - destination: last three items are required"
|
||||||
formItem "keep" "$rdiff_keep"
|
formItem "keep" "$rdiff_keep"
|
||||||
formItem "dest_directory" "$rdiff_directory"
|
formItem "dest_directory" "$rdiff_directory"
|
||||||
formItem "dest_host" "$rdiff_host"
|
formItem "dest_host" "$rdiff_host"
|
||||||
@ -24,42 +129,11 @@ do_rdiff_dest() {
|
|||||||
rdiff_host=${thereply[2]}
|
rdiff_host=${thereply[2]}
|
||||||
rdiff_user=${thereply[3]}
|
rdiff_user=${thereply[3]}
|
||||||
|
|
||||||
|
done
|
||||||
|
set +o noglob
|
||||||
|
|
||||||
_dest_done="(DONE)"
|
_dest_done="(DONE)"
|
||||||
setDefault conn
|
setDefault conn
|
||||||
set +o noglob
|
|
||||||
}
|
|
||||||
|
|
||||||
do_rdiff_src() {
|
|
||||||
#echo ${rdiff_includes[@]}
|
|
||||||
set -o noglob
|
|
||||||
formBegin "$rdiff_title: includes"
|
|
||||||
for ((i=0; i < ${#rdiff_includes[@]} ; i++)); do
|
|
||||||
formItem include ${rdiff_includes[$i]}
|
|
||||||
done
|
|
||||||
formItem include
|
|
||||||
formItem include
|
|
||||||
formItem include
|
|
||||||
formDisplay
|
|
||||||
[ $? = 0 ] || return
|
|
||||||
|
|
||||||
unset rdiff_includes
|
|
||||||
rdiff_includes=($REPLY)
|
|
||||||
|
|
||||||
formBegin "$rdiff_title: excludes"
|
|
||||||
for ((i=0; i < ${#rdiff_excludes[@]} ; i++)); do
|
|
||||||
formItem exclude ${rdiff_excludes[$i]}
|
|
||||||
done
|
|
||||||
formItem exclude
|
|
||||||
formItem exclude
|
|
||||||
formDisplay
|
|
||||||
[ $? = 0 ] || return
|
|
||||||
|
|
||||||
unset rdiff_excludes
|
|
||||||
rdiff_excludes=($REPLY)
|
|
||||||
|
|
||||||
_src_done="(DONE)"
|
|
||||||
setDefault dest
|
|
||||||
set +o noglob
|
|
||||||
}
|
}
|
||||||
|
|
||||||
do_rdiff_ssh_con() {
|
do_rdiff_ssh_con() {
|
||||||
@ -232,22 +306,68 @@ do_rdiff_finish() {
|
|||||||
type = local
|
type = local
|
||||||
keep = $rdiff_keep
|
keep = $rdiff_keep
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
|
if [ "$host_or_vservers" == host -o "$host_or_vservers" == both ]
|
||||||
|
then
|
||||||
set -o noglob
|
set -o noglob
|
||||||
for ((i=0; i < ${#rdiff_includes[@]} ; i++)); do
|
|
||||||
|
for ((i=0; i < ${#rdiff_includes[@]} ; i++))
|
||||||
|
do
|
||||||
echo "include = ${rdiff_includes[$i]}" >> $next_filename
|
echo "include = ${rdiff_includes[$i]}" >> $next_filename
|
||||||
done
|
done
|
||||||
for ((i=0; i < ${#rdiff_excludes[@]} ; i++)); do
|
|
||||||
|
set +o noglob
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$host_or_vservers" == vservers -o "$host_or_vservers" == both ]
|
||||||
|
then
|
||||||
|
cat >> $next_filename <<EOF
|
||||||
|
#
|
||||||
|
# If vservers = yes in /etc/backupninja.conf then the following variables can
|
||||||
|
# be used:
|
||||||
|
# vsnames = all | <vserver1> <vserver2> ... (default = all)
|
||||||
|
# vsinclude = <path>
|
||||||
|
# vsinclude = <path>
|
||||||
|
# ...
|
||||||
|
# Any path specified in vsinclude is added to the include list for each vserver
|
||||||
|
# listed in vsnames (or all if vsnames = all).
|
||||||
|
#
|
||||||
|
# For example, vsinclude = /home will backup the /home partition in every
|
||||||
|
# vserver listed in vsnames. If you have vsnames = "foo bar baz", this
|
||||||
|
# vsinclude will add to the include list /vservers/foo/home,
|
||||||
|
# /vservers/bar/home and /vservers/baz/home.
|
||||||
|
# Vserver paths are derived from $VROOTDIR.
|
||||||
|
|
||||||
|
EOF
|
||||||
|
|
||||||
|
set -o noglob
|
||||||
|
echo -e "vsnames = \"$selected_vservers\"\n" >> $next_filename
|
||||||
|
for i in $rdiff_vsincludes; do
|
||||||
|
echo "vsinclude = $i" >> $next_filename
|
||||||
|
done
|
||||||
|
set +o noglob
|
||||||
|
fi
|
||||||
|
|
||||||
|
# excludes
|
||||||
|
|
||||||
|
for ((i=0; i < ${#rdiff_excludes[@]} ; i++))
|
||||||
|
do
|
||||||
echo exclude = ${rdiff_excludes[$i]} >> $next_filename
|
echo exclude = ${rdiff_excludes[$i]} >> $next_filename
|
||||||
done
|
done
|
||||||
set +o noglob
|
set +o noglob
|
||||||
cat >> $next_filename <<EOF
|
cat >> $next_filename <<EOF
|
||||||
|
|
||||||
|
######################################################
|
||||||
|
## destination section
|
||||||
|
## (where the files are copied to)
|
||||||
|
|
||||||
[dest]
|
[dest]
|
||||||
type = remote
|
type = remote
|
||||||
directory = $rdiff_directory
|
directory = $rdiff_directory
|
||||||
host = $rdiff_host
|
host = $rdiff_host
|
||||||
user = $rdiff_user
|
user = $rdiff_user
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
chmod 600 $next_filename
|
chmod 600 $next_filename
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -297,10 +417,14 @@ rdiff_wizard() {
|
|||||||
rdiff_directory=/backup/`hostname`
|
rdiff_directory=/backup/`hostname`
|
||||||
rdiff_user=
|
rdiff_user=
|
||||||
rdiff_host=
|
rdiff_host=
|
||||||
|
|
||||||
|
# Global variables whose '*' shall not be expanded
|
||||||
set -o noglob
|
set -o noglob
|
||||||
rdiff_includes=(/var/spool/cron/crontabs /var/backups /etc /root /home /usr/local/*bin /var/lib/dpkg/status*)
|
rdiff_includes=(/var/spool/cron/crontabs /var/backups /etc /root /home /usr/local/*bin /var/lib/dpkg/status*)
|
||||||
rdiff_excludes=(/home/*/.gnupg)
|
rdiff_excludes=(/home/*/.gnupg)
|
||||||
|
rdiff_vsincludes=
|
||||||
set +o noglob
|
set +o noglob
|
||||||
|
|
||||||
rdiff_main_menu
|
rdiff_main_menu
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user