scripts/ftp-backup/ftp-backup.sh
2006-09-17 23:18:36 +02:00

78 lines
1.8 KiB
Bash

#!/bin/bash
FTP_CREDS="/root/backup/ftpserver.login"
BACKUP_SYSTEM="bin boot dev lib mnt opt sbin usr"
BACKUP_CONFIG="etc"
BACKUP_USER="home root"
BACKUP_VAR="var"
# ------------------
umask 0077
TODAY=`date +%Y-%m-%d`
OLDDAY=`date +%Y-%m-%d -d '-6 months'`
TMPDIR=`mktemp -d`
# ------------------
function create_backup {
echo "## "`date`
target=$1
shift
rm -rf $target
tar --totals -czpf $target -C / $@ 2>&1
/usr/bin/md5sum -b $target
echo
}
function ftp_push_delete {
echo "## "`/bin/date`
target=$1
shift
# workaround -X %s bug in ncftpput (do not use absolute local paths)
pushd . &> /dev/null
cd $TMPDIR
for file in $@; do
files="$files `/usr/bin/basename $file`"
done
/usr/bin/ncftpput -V -X "SITE CHMOD 600 %s" -f $FTP_CREDS $target $files
popd &> /dev/null
# end workaround
echo
}
function ftp_list {
echo "## "`date`
ftp_host=`/usr/bin/awk '/host/{ print $2 }' $FTP_CREDS`
/usr/bin/ncftpls -l -f $FTP_CREDS ftp://${ftp_host}/
echo
}
function ftp_delete {
echo "delete $1"
ftp_host=`/usr/bin/awk '/host/{ print $2 }' $FTP_CREDS`
/usr/bin/ncftpls -l -f $FTP_CREDS -X "DELE $1" ftp://${ftp_host}/ &> /dev/null
}
# ------------------
create_backup $TMPDIR/backup-${TODAY}-system.tar.gz $BACKUP_SYSTEM
create_backup $TMPDIR/backup-${TODAY}-config.tar.gz $BACKUP_CONFIG
create_backup $TMPDIR/backup-${TODAY}-user.tar.gz $BACKUP_USER
create_backup $TMPDIR/backup-${TODAY}-var.tar.gz $BACKUP_VAR
ftp_push_delete / $TMPDIR/backup-${TODAY}-*.tar.gz
ftp_delete backup-${OLDDAY}-system.tar.gz
ftp_delete backup-${OLDDAY}-config.tar.gz
ftp_delete backup-${OLDDAY}-user.tar.gz
ftp_delete backup-${OLDDAY}-var.tar.gz
ftp_list
echo "FTP backup completed."
rm -rf $TMPDIR