cat /etc/cron.daily/backup
#! /bin/bash /root/backup
cat /root/backup
#! /bin/bash # backup v1.0 # create $rotate copies of backup homes and site on ftp # nead lftp, bzip2 #variables # чтоб в почте было на английском LANG=C # число бэкапов rotate=10 # адрес ftp, пользователь, пароль ftp_backup="arhiv" user="backup" pass="xxxxxxxxx" datebackup=`date +%Y_%m_%d` cd /home/backup/ ## zip /etc tar cfj ${HOSTNAME}-etc-${datebackup}.tar.bz2 /etc ## zip /root tar cfj ${HOSTNAME}-root-${datebackup}.tar.bz2 /root ## zip /var/www tar cj --exclude="*.zip" --exclude="*.doc" --file ${HOSTNAME}-www-${datebackup}.tar.bz2 /var/www ## zip /home tar cj --exclude="backup" --exclude="distrib" --exclude="lost+found" --file \ ${HOSTNAME}-home-${datebackup}.tar.bz2 /home ## zip www mysql dump mysqldump name_database -u root -pxxxxxxxxx|bzip2 -c9 > ${HOSTNAME}-mysql-${datebackup}.bz2 ## zip списка установленых пакетов aptitude search ~i -F '%p'|bzip2 -c9 > ${HOSTNAME}-apt-${datebackup}.bz2 ## tar всех zips tar cf ${HOSTNAME}-backup-${datebackup}.tar *.bz2 ## удаление всех zips rm -f *.bz2 ## посылаем tar на ftp lftp -c "lftp ${user}:${pass}@${ftp_backup} ; put ${HOSTNAME}-backup-${datebackup}.tar" ## смотрим список файлов на ftp list=`lftp -c "lftp ${user}:${pass}@${ftp_backup} ; ls"` ## считаем кол-во файлов num_bac=`echo $list|sed "s/$HOSTNAME/\n$HOSTNAME/g"|grep $HOSTNAME-backup|wc -l` ## если кол-во > rotate - удаляем старые бэкапы if [ $num_bac -lt $rotate ] ; then echo "all ok" ; exit 0 else for i in `echo $list|sed "s/$HOSTNAME/\n$HOSTNAME/g"|grep $HOSTNAME-backup|awk\ '{print $1}'|sort|head -n$[$num_bac-$rotate]` ; do rm -f $i || echo "rm $i in $PWD failed" lftp -c "lftp ${user}:${pass}@${ftp_backup} ; rm $i" || echo "rm $i in FTP failed" echo "remove old backup $i ok" done fi