如何在Red Hat/CentOS Linux上安装rsnapshot远程备份服务器
我有带有运行RHEL/CentOS Linux 5.x/6.x/7.x的硬件RAID 6的HP服务器。
如何将此框用作所有其他均由Linux/macOS或者类Unix系统提供支持的其他服务器,台式机和便携式计算机的备份服务器。
该服务器必须按小时,每日和每月的格式进行备份。
如何使用rsnapshot将Red Hat Enterprise Linux或者CentOS Linux服务器配置为远程备份或者快照服务器?
rsnapshot是免费的开源文件系统快照软件。
它是一种简单,可靠的灾难恢复备份解决方案。
它是一个远程备份程序,使用rsync来获取文件系统的备份快照。
它使用硬链接来节省磁盘空间,并提供以下功能:
- 用于本地或者远程系统的"文件系统快照"
- 数据库备份MySQL/PgSQL备份
- "安全"始终使用openssh加密远程备份服务器之间的流量
- "完全备份",以及每日,每小时和每月的增量备份
- "易于还原"拥有它们的用户可以恢复文件,而无需root用户参与。
自动备份
通过cron在后台运行。- 带宽友好rsync也可以节省带宽
本教程向您展示如何在基于CentOS或者RHEL的服务器上安装和使用rsnapshot。
设置示例
- snapshot.example.com配置有Red Hat/CentOS Linux的RAID 6的HP盒用作其他客户端的备份服务器。
- DNS ns1.example.com Red Hat服务器充当主要名称服务器。
- DNS ns2.example.com Red Hat服务器充当辅助名称服务器。
- www.example.com运行Apache Web服务器的Red Hat。
- mysql.example.com红帽mysql服务器。
在RHEL/CentOS Linux机器上安装rsnapshot
登录到snapshot.example.com服务器。
执行以下yum命令以安装rsnapshot(首先在CentOS/RHEL上启用EPEL存储库)
# yum install rsnapshot
配置rsnapshot
您需要执行以下步骤。
步骤1:配置少密码登录
要执行远程备份,您需要使用openssh设置少密码登录(请参阅如何创建少密码ssh密钥)。
创建您的rsa ssh密钥,然后使用scp或者ssh-copy-id将它们上传到所有服务器。
您需要在snapshot.example.com服务器上执行以下命令:
# ssh-keygen -t rsa
或者
# ssh-keygen -t rsa -b 4096 -C "My rsnapshot backup server key"
我强烈建议您用密码保护将"复制"公钥复制到所有框:
############################## ## WARNING OVERWRITING FILE ## ############################## # scp .ssh/id_rsa.pub [email protected]:.ssh/authorized_keys2 # scp .ssh/id_rsa.pub [email protected]:.ssh/authorized_keys2 # scp .ssh/id_rsa.pub [email protected]:.ssh/authorized_keys2 # scp .ssh/id_rsa.pub [email protected]:.ssh/authorized_keys2
为了避免使用ssh-copy-id命令覆盖文件,如下所示:
# ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected] # ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected] # ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected] # ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]
步骤2:配置rsnapshot
缺省配置文件位于/etc/rsnapshot.conf。
使用文本编辑器打开配置文件,执行:
# vi /etc/rsnapshot.conf
配置规则
您必须遵循两个配置规则:
- rsnapshot配置文件需要元素之间的选项卡。
- 所有目录都必须在末尾加斜杠。例如,/home /是指定目录的正确方法,但是/home是错误的。
首先,根据您的RAID设置,指定根目录来存储所有快照,例如/snapshots /或者/dynvol/snapshot /,执行:
snapshot_root /raiddisk/snapshots/
您必须通过[tab]键将snapshot_root和/raiddisk/snapshots /分开,即,执行snapshot_root击中[tab]键一次,然后执行/raiddisk/snapshots /。
定义快照间隔
您需要指定备份间隔,即指定每小时,每天,每周和每月的间隔:
interval hourly 6 interval daily 7 interval weekly 4 interval monthly 3
线间隔hourlyly6表示一天要进行6个小时的备份。
可以根据您的备份要求和快照频率随意调整配置。
您也可以按年备份选项:
######################################### # BACKUP LEVELS / INTERVALS # # Must be unique and in ascending order # ######################################### interval hourly 6 interval daily 7 interval weekly 4 interval monthly 12 interval yearly 5
远程备份目录
要从ns1.example.com和ns2.example.com备份/var/named /和/etc /目录,请追加:
backup [email protected]:/etc/ ns1.example.com/ backup [email protected]:/var/named/ ns1.example.com/ backup [email protected]:/etc/ ns2.example.com/ backup [email protected]:/var/named/ ns2.example.com/
要从www.example.com备份/var/www /,/var/log/httpd /和/etc /目录,请输入
backup [email protected]:/var/www/ www.example.com/ backup [email protected]:/etc/ www.example.com/ backup [email protected]:/var/log/httpd/ www.example.com/
要备份存储在/var/lib/mysql /中的mysql数据库文件,请执行:
backup [email protected]:/var/lib/mysql/ mysql.example.com/dbdump/
使用rsnapshot服务器时,也可以使用此bash shell脚本来备份mysql数据库。
保存并关闭文件。
要测试您的配置,请执行:
# rsnapshot configtest
输出示例:
Syntax OK
安排Cron工作
创建一个名为/etc/cron.d/rsnapshot cron文件的新文件。
使用的以下值对应于/etc/rsnapshot.conf中的示例。
0 */4 * * * /usr/bin/rsnapshot hourly 50 23 * * * /usr/bin/rsnapshot daily 40 23 * * 6 /usr/bin/rsnapshot weekly 30 23 1 * * /usr/bin/rsnapshot monthly # yearly if set # 0 0 1 1 * /usr/bin/rsnapshot yearly
保存并关闭文件。
现在,rsnapshot可以按以下方式从远程文件箱备份文件:
- 每天进行" 6小时一次"备份(每4小时一次,分别为0、4、8、12、16、20)
- `每天1个每日备份,每天晚上11:50
- 每周的11:40 PM,每周六(一周的第六天)进行"每周一次备份"
- 每月的1号,每月的第1天,晚上11:30
我如何查看备份?
要查看备份更改目录到
# cd /raiddisk/snapshots/ # ls -l
如何还原备份?
假设您要恢复www.example.com的备份。
执行以下命令(从ls -l输出中选择日期和日期):
# cd /raiddisk/snapshots/ # ls -l # cd hourly.0/www.example.com/ # scp -r var/www/ [email protected]:/var/www/ # scp -r etc/httpd/ [email protected]:/etc/httpd/
如何从备份中排除文件?
要从备份中排除文件,请打开rsnapshot.conf文件并添加以下行:
exclude_file /etc/rsnapshot.exclude.www.example.com
如下创建/etc/rsnapshot.exclude.www.example.com:
/var/www/tmp/ /var/www/*.cache