FILENAME=n100wrt-$(date +%a | tr A-Z a-z)
echo START: $(date) >/root/localbackup/$FILENAME.log
cat /root/localbackup/run-backup.sh >> /root/localbackup/$FILENAME.log
tar -cvpzf /root/localbackup/$FILENAME.tar.gz --exclude=/root/localbackup --exclude=/proc --exclude=/mnt --exclude=/lost+found --exclude=/sys / >>/root/localbackup/$FILENAME.log 2>&1
rsync -avL /root/localbackup/$FILENAME.tar.gz homebackup@192.168.100.10:~/n100wrt >>/root/localbackup/$FILENAME.log 2>&1
echo END: $(date) >>/root/localbackup/$FILENAME.log
rsync -avL /root/localbackup/$FILENAME.log homebackup@192.168.100.10:~/n100wrt
基本作用是备份全部存储空间,附带生成带有开始时间、脚本内容、报错、以及结束时间的日志,同步到另一服务器,并且只保留最近一周的备份。逐行解释:
- 设置一个名为 FILENAME 的变量,变量值为 n100wrt-当前星期的英文小写简写,比如今天是星期一,变量就是 n100wrt-mon
- 把当前时间写入日志文件(会清除原有的文件内容)
- 把脚本内容追加写入到日志文件
- 使用 tar 压缩存储文件,排除部分目录,尤其注意排除备份文件或存储备份文件的目录。然后将报错追加写入日志文件( 2>&1 作用是将标准错误输出重定向到标准输出)
- 使用 rsync 同步备份文件,然后将报错追加写入日志文件。这里需要提前设置好登录凭证,以避免出现交互请求
- 把当前时间追加写入日志文件
- 使用 rsync 同步日志文件
然后在 crontab 里添加一行 5 5 * * * /root/localbackup/run-backup.sh,让它每天早上 5 点 5 分自动运行,一个简易的自动每日备份就完成了
正文完