54 lines
1.1 KiB
Plaintext
54 lines
1.1 KiB
Plaintext
|
#!/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}
|