参考文章
1.Linux 定期自动备份脚本
2.《深入浅出Linux工具与编程》
此脚本实现了按需备份(排除指定的不需要备份的文件)和自动ftp上传功能。并有相应的日志记录,配合cron命令定期执行此脚本可实现定期数据自动备份上传。
backup.sh 内容如下:
#!/bin/bash
#author: mylq
#date: 2016-12-26
#role: backup files periodically.
#website: http://blog.youkuaiyun.com/myslq
##################################################
WORKDIR=/backup
LogFile=/backup/log/`date +"%Y-%m"`.log
DATE=`date +"%Y-%m-%d"`
##################################################
echo "backup start at $(date +"%Y-%m-%d %H:%M:%S")" > $LogFile
echo "--------------------------------------------------" >> $LogFile
rm -f data/backup.$DATE.tar data/exclude.list
#产生排除文件列表
#*.tar *.Z *.gz *.rar *.o .*等文件不进行备份
find -L include -name '*.tar' -o -name '*.Z' -o -name '*.gz' -o -name '*.o' -o -name '.*' >> data/exclude.list
find -L src -name '*.tar' -o -name '*.Z' -o -name '*.gz' -o -name '*.o' -o -name '.*' >> data/exclude.list
tar -chvf data/backup.$DATE.tar -X data/exclude.list .profile include src scripts lib
compress -F data/backup.$DATE.tar
ftp -n 192.168.2.110 <<!
user backup backup
lcd backup
cd bak_dir
bin
put backup.$DATE.tar.Z
bye
!
rm -f data/backup.$DATE.tar data/backup.tar.Z data/exclude.list
echo "--------------------------------------------------" >> $LogFile
echo "backup end at $(date +"%Y-%m-%d %H:%M:%S")" >> $LogFile
echo " " >> $LogFile
exit 0