在Debian上设置Rsnapshot,归档快照和MySQL数据库的备份
作者Nedim Hadzimahmutovic <h.nedim@gmail.com>
本文将向您展示如何安装和设置Rsnapshot,启用快照归档以及如何在Debian上备份MySQL数据库。
使用apt-get实用程序安装程序:
apt-get install rsnapshot
编辑配置文件:
nano /etc/rsnapshot.conf
将snapshot_root设置为要保留备份的路径 :
snapshot_root /var/cache/rsnapshot/
设置要备份的目录/文件列表。
backup /etc/ localhost/
备份间隔
配置文件的此部分仅用于定义间隔的标签以及要保留的每个级别的快照数。 快照的频率是通过cron进行配置和运行的。 关键字间隔之后是字母数字标签,后跟一个数字,表示要保留多少间隔(快照)。 间隔标签必须是唯一的,并且按升序排列,必须首先列出最小间隔。
在下面的例子中,在6个“小时”快照之后,最早的“小时”被删除。 顶部条目(在这种情况下为“小时”)是从源文件复制的,而其余的条目只需从上一级链接到最新的快照。
换句话说,为了每天保持六次备份(四个小时的间隔时间),七次每日备份(一周)和四次每周备份(一个月),请注明:
interval hourly 6 interval daily 7 interval weekly 4
间隔标签“小时”,“每日”,“每周”可以根据您的需要进行更改,例如“daysago”,“weeksago”和“monthsago”。
每次rsnapshot小时执行时,手动或由cron执行,它将创建一个新的快照,旋转旧的快照,并保留最近的6个(小时-0小时.5)。
备份点
配置文件中的备份点示例:
backup /etc/ localhost/
备份点以单词备份开始,/ etc /之后是要备份的目录的完整路径,localhost是snapshot_root中的目录。 您可以将localhost更改为与服务器完全合格的域名相关联的任何内容。
除了本地文件系统上的完整路径之外,还可以使用ssh上的rsync备份远程系统。 如果您已安装并启用了ssh(通过cmd_ssh参数),则可以指定如下所示的路径:
backup root@example.com:/etc/ example.com/
请记住,您必须为example.com上的root用户启用基于密钥的登录,而无需密码才能正常运行。
备份脚本
您可以在Debian的/ usr / share / doc / rsnapshot / examples / utils /
中的utils目录中找到许多示例。
每个最低间隔执行备份脚本。
通过Cron执行备份
cron文件位于
/etc/cron.d/rsnapshot
默认内容:
# 0 */4 * * * root /usr/bin/rsnapshot hourly # 30 3 * * * root /usr/bin/rsnapshot daily # 0 3 * * 1 root /usr/bin/rsnapshot weekly # 30 2 1 * * root /usr/bin/rsnapshot monthly
您必须取消注释行才能激活备份。
第一个告诉cron每4小时执行一次cron-apt,它与rsnapshot.conf中的小时间间隔设置相匹配。
测试配置:
每当您在配置文件中进行更改时,都需要进行一个configtest:
rsnapshot configtest
请注意以下规定:
- 配置文件需要元素之间的选项卡,空格表示脚本的参数
- 目录需要尾部斜杠,例如:
右 : / home /
错了 : / home
归档快照
cp /usr/share/doc/rsnapshot/examples/utils/rsnaptar /usr/local/bin/
确保您的备份脚本由root拥有,并且不能由任何其他人写入。
chown root.root /usr/local/bin/rsnaptar
chmod o-w /usr/local/bin/rsnaptar
编辑脚本并设置目录路径:
nano /usr/local/bin/rsnaptar
将TAR_DIR设置为快照归档的路径,将SNAPSHOT_DIR设置为每日快照所在的位置:
TAR_DIR="/home/user/dvd_backup" SNAPSHOT_DIR="/var/cache/rsnapshot/daily.0"
请注意,为了创建每日快照,需要完成小时周期。
此脚本支持gpg格式的文件,禁用它在/ usr / local / bin / rsnaptar中的fline之后注释掉
:
GPG="/usr/bin/gpg"
通过Cron计划执行
nano /etc/cron.daily/rsnaptar
加:
#!/usr/bin/env bash /usr/local/bin/rsnaptar root@example.com
笔记:
- - 这个howto不使用GPG选项加密文件,如果这是必要的,我可以更新howto包含文件加密以更好的安全性,
- - 默认情况下脚本是独立运行的,但是可以修改为通过rsnapshot本身作为backup_script运行,
Rsnapshot:备份MySQL数据库
安装mysql-client如果没有安装,这将提供mysqldump实用程序:
# apt-get install mysql-client
# cp /usr/share/doc/rsnapshot/examples/utils/backup_mysql.sh /usr/local/bin/
确保您的备份脚本由root拥有,并且不能由任何其他人写入。
chown root.root /usr/local/bin/backup_mysql.sh
chmod o-w /usr/local/bin/backup_mysql.sh
此脚本仅用于将所有数据库备份到单个文件。
编辑脚本:
nano /usr/local/bin/backup_mysql.sh
更换
/usr/bin/mysqldump --all-databases > mysqldump_all_databases.sql
与
/usr/bin/mysqldump --defaults-file=/etc/mysql/debian.cnf --all-databases > mysqldump_all_databases.sql
如果您需要转储单个数据库使用行如下:
/usr/bin/mysqldump --defaults-file=/etc/mysql/debian.cnf DATABASE > DATABASE.SQL
添加脚本到Rsnapshot
编辑rsnapshot配置:
nano /etc/rsnapshot.conf
在BACKUP POINTS / SCRIPTS下面添加以下内容:
backup_script /usr/local/bin/backup_mysql.sh localhost/mysqldump/
测试配置:
rsnapshot configtest