创建脚本/root/script/backup.sh
# 该脚本应用于10多台普通的Linux应用服务器,多年来从未出过差错。 # 数据库备份较为特殊,这里不包含数据库备份。 # 因为脚本中含有FTP密码,所以FTP仅给予写权限较为安全,FTP中的老备份的定期删除任务由FTP服务器完成。 # 备份加入到自动任务中,每周六23:00执行,并写入日志,如下: # 追加下面语句到/etc/crontab中 # 0 23 * * 6 root /root/script/backup.sh >> /root/script/backup.log 2>&1 #有注释版: #!/bin/bash #===================================================== #author zhaoyn #date 2010/12/31 #===================================================== #参数设定 basedir=/opt/backup #备份存放的目录 days=15 #备份在本地保留天数 bakfiles="/root/script /etc" #需要备份的目录或文件,请不要使用快捷方式或通配符 ftpip=XXX.XXX.XXX.XXX #异地备份的FTP地址 ftpuser='username' #异地备份的FTP用户名 ftppw='password' #异地备份的FTP密码 echo ===================================================== date cd $basedir #删除备份目录中15天以前备份文件,不包含子目录 find -maxdepth 1 -name "*.tgz" -mtime +"$days" -exec rm -f {} \; for bakfile in $bakfiles do file=`basename $bakfile` #压缩打包需要备份的目录,包括权限,文件命名包含当前时间 tar -czpf "$file"_$(date +%Y%m%d-%H%M).tgz $bakfile #大文件打包前后,缓解磁盘压力,降低I/O错误概率 sleep 10s ;sync;sync done #通过FTP上传当天备份的文件到异地 ftp -v -n -i $ftpip <<END user $ftpuser $ftppw bin mput *$(date +%Y%m%d)*.tgz bye END
#无注释版:
#!/bin/bash #===================================================== #author zhaoyn #date 2010/12/31 #===================================================== basedir=/opt/backup days=15 bakfiles="/root/script /etc" ftpip=XXX.XXX.XXX.XXX ftpuser='username' ftppw='password' echo ===================================================== date cd $basedir find -maxdepth 1 -name "*.tgz" -mtime +"$days" -exec rm -f {} \; for bakfile in $bakfiles do file=`basename $bakfile` tar -czpf "$file"_$(date +%Y%m%d-%H%M).tgz $bakfile sleep 10s ;sync;sync done ftp -v -n -i $ftpip <<END user $ftpuser $ftppw bin mput *$(date +%Y%m%d)*.tgz bye END
原文:http://www.zhaoyanan.cn/linux-local-and-remote-automatic-backup-solutions.html
转载于:https://blog.51cto.com/zhaoyanan/287786