54 lines
1.1 KiB
Bash
Executable File
54 lines
1.1 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
##################################################################
|
|
# does backups (duh.) with rsync, either local or remote via ssh
|
|
# sources the file given as first parameter and acts accordingly
|
|
# example file:
|
|
#
|
|
# precommand="echo Yippee ki-yay"
|
|
# postcommand="echo done"
|
|
# remote=true
|
|
# sshUserHost="foo@bar.org"
|
|
#
|
|
# files="
|
|
# /etc
|
|
# /some/other/folder
|
|
# /some/file.sh
|
|
# "
|
|
#
|
|
##################################################################
|
|
|
|
|
|
name=`basename $1`
|
|
source $1
|
|
|
|
timestamp=`date +"%Y%m%d-%H%M"`
|
|
dest="$HOME/backups/$name-$timestamp"
|
|
|
|
if [ "$remote" = true ]; then
|
|
if [ -z "$sshUserHost" ]; then
|
|
echo "ssh data not complete, needs sshUserHost"
|
|
exit 1
|
|
else
|
|
command="rsync -avzR -e ssh $sshUserHost:"
|
|
fi
|
|
else
|
|
command="rsync -avR "
|
|
fi
|
|
|
|
echo "$precommand"
|
|
eval ${precommand}
|
|
|
|
for file in $files; do
|
|
fullcommand="$command$file $dest"
|
|
echo "$fullcommand"
|
|
if [ "$remote" = true ]; then
|
|
$fullcommand
|
|
else
|
|
$fullcommand || exit 1
|
|
fi
|
|
done
|
|
|
|
echo "$postcommand"
|
|
eval ${postcommand}
|