X-Git-Url: http://git.grml.org/?a=blobdiff_plain;f=usr_sbin%2Fdirvish-setup;fp=usr_sbin%2Fdirvish-setup;h=817c36d8229688a518e6735ec4ede75d8dd5bba4;hb=1b8dcad8b9da618cb6c0e22a762cafb08e262640;hp=0000000000000000000000000000000000000000;hpb=608ca3eeeacd74efa85ad44f5585d1b1b60c8d85;p=grml-scripts-core.git diff --git a/usr_sbin/dirvish-setup b/usr_sbin/dirvish-setup new file mode 100755 index 0000000..817c36d --- /dev/null +++ b/usr_sbin/dirvish-setup @@ -0,0 +1,188 @@ +#!/bin/sh +# Filename: dirvish-setup +# Purpose: create basic setup for dirvish(8) +# Authors: grml-team (grml.org), (c) Michael Prokop +# Bug-Reports: see http://grml.org/bugs/ +# License: This file is licensed under the GPL v2. +################################################################################ +# Ressources: +# http://apt-get.dk/howto/backup/ +# http://edseek.com/~jasonb/articles/dirvish_backup/advanced.html +# http://www.dirvish.org/svn/contrib/admin/DailyEmailScript/dirvish-status.sh +################################################################################ + +set -e + +. /etc/grml/script-functions +. /etc/grml/lsb-functions + +check4root +check4progs dialog dirvish rsync ssh-keygen ssh-copy-id + +PN="$0" +CONFFILE=/etc/dirvish/master.conf + +set +e + +write_conffile() { + if [ -f "$CONFFILE" ] ; then + MASTERINFO="Notice: $CONFFILE exists already so I will not touch it. +Please do not forget to add $CLIENT to the file if you wan to use the 'Runall' functionality." + else + MASTERINFO="An initial master configuration ($CONFFILE) has been generated. +Please adjust it according to your needs." + cat > $CONFFILE << EOF +# Master configuration file for dirvish, created by $PN on $(date) + +bank: + $BACKUP_DIR + +exclude: + lost+found/ +# core +# *~ +# .nfs* +# /var/lib/nfs/*tab +# var/cache/apt/archives +# var/cache/man +# var/tmp +# tmp +# /dev +# .kde/share/cache/* +# .firefox/default/*/Cache/* + +Runall: + $CLIENT 22:00 + # add-another-client-here 22:00 + + # See http://www.dirvish.org/debian.howto.html for further details: +expire-default: +30 days +expire-rule: +# MIN HR DOM MON DOW STRFTIME_FMT + * * * * 1 +3 months + * * 1-7 * 1 +1 year + * * 1-7 1,4,7,10 1 + * 10-20 * * * +4 days +# * * * * 2-7 +15 days + +EOF + fi +} + +# TODO / integrate? +cronsetup() { + test -f ~/.keychain/`uname -n`-sh && . ~/.keychain/`uname -n`-sh +} + +get_backup_dir() { + # prompt user for directory which should be used + BACKUP_DIR="$(dialog --stdout --inputbox 'Please choose the directory where backups should be placed' 0 0 /backups)" + + if ! [ -d "$BACKUP_DIR" ] ; then + dialog --stdout --title "${PN}" --yesno "The directory $BACKUP_DIR does not yet exist. Do you want me to create it for you? " 0 0 + + if [ $? -eq 0 ]; then + echo "mkdir $BACKUP_DIR" + echo "chmod 700 $BACKUP_DIR" + else + echo "warning: $BACKUP_DIR does not exist, skipped creation as requested" + fi + fi +} + +client_name() { + CLIENT="$(dialog --stdout --inputbox 'Please choose the name for your client instance, also known as vault' 0 0 client1)" +} + +tree_name() { + TREE="$(dialog --stdout --inputbox 'Please choose the directory you want to backup from your client (also known as tree)' 0 0 /home)" +} + +create_client_conf() { + mkdir -p "${BACKUP_DIR}/${CLIENT}/dirvish" + if [ -f "${BACKUP_DIR}/${CLIENT}/dirvish/default.conf" ] ; then + ewarn "Warning: ${BACKUP_DIR}/${CLIENT}/dirvish/default.conf exists already, ignoring creation." ; eend 0 + else + cat > "${BACKUP_DIR}/${CLIENT}/dirvish/default.conf" << EOF +# Configuration file of client-side for dirvish created by $PN on $(date) +client: $CLIENTNAME +tree: $TREE +xdev: true +index: gzip +image-default: %Y-%m-%d +exclude: + var/cache/apt/archives/* + var/cache/man/* + tmp/* + var/tmp/* +rsh: ssh -i $HOME/.ssh/id_rsa_dirvish_${CLIENT} +EOF + fi +} + +sshkey_setup() { + CLIENTNAME="$(dialog --stdout --inputbox 'Please choose user login and hostname for the client you want to backup. Syntax: user@host' 0 0 root@$(hostname))" + + dialog --stdout --title "${PN}" --yesno "Do you want me to create ssh setup for client ${CLIENTNAME} using ssh-keygen and ssh-copy-id?" 0 0 + + if [ $? -eq 0 ]; then + [ -d "$HOME/.ssh" ] || mkdir "$HOME/.ssh" + einfo "Creating $HOME/.ssh/id_rsa_dirvish_${CLIENT} using ssh-keygen:" + ssh-keygen -t rsa -f "$HOME/.ssh/id_rsa_dirvish_${CLIENT}" ; eend $? + einfo "Running ssh-copy-id to copy ssh key to $CLIENTNAME:" + ssh-copy-id -i "$HOME/.ssh/id_rsa_dirvish_${CLIENT}.pub" $CLIENTNAME ; eend $? + fi +} + +client_setup() { + dialog --stdout --title "${PN}" --yesno "Do you want to backup $CLIENT via network? Answering with no will use localhost [$(hostname)] as client." 0 0 + + if [ $? -eq 0 ]; then + sshkey_setup + else + CLIENTNAME=$(hostname) # use localhost only + fi +} + +display_info() { + einfo "Running $PN was successful. Enjoy using dirvish!" ; eend 0 + echo + einfo "Please adjust ${BACKUP_DIR}/${CLIENT}/dirvish/default.conf according to your needs. +$MASTERINFO +Then run the following command to create an initial backup: + + dirvish --summary long --vault $CLIENT --init + +Find the backup inside $BACKUP_DIR/$CLIENT/$(date +%Y-%m-%d)/tree/ then. + +Documentation available at: + + man dirvish-locate.1 dirvish.conf.5 dirvish.8 dirvish-runall.8 dirvish-expire.8 + /usr/share/doc/dirvish/HOWTO.upstream /usr/share/doc/dirvish/FAQ.html + /usr/share/doc/dirvish/HOWTO.Debian.gz + + http://www.dirvish.org/ + http://wiki.dirvish.org/ + +Please report bugs regarding ${PN}: http://grml.org/bugs/ +" ; eend 0 +} + +case "$1" in + -h | --help | --h* ) + echo "Usage: $PN" 1>&2 + exit 1 + ;; +esac + +# now run the funtions: +get_backup_dir && \ +client_name && \ +tree_name && \ +client_setup && \ +create_client_conf && \ +write_conffile && \ +display_info + +## END OF FILE ################################################################# +# vim: ft=sh ai tw=80 expandtab