Debian/Ubuntu Linux使用rsnapshot增量备份实用程序安装和配置远程文件系统快照

时间:2020-01-09 10:41:54  来源:igfitidea点击:

如何将我的Debian机器配置为使用rsnapshot软件备份两个远程服务器。
它应该为位于/disk1(/dev/sdb2)的第二个硬盘上的任意数量的计算机创建本地和远程文件系统的增量快照。
如何在Ubuntu或者Debian Linux服务器上安装和使用rsnapshot?

rsnapshot是用于在本地系统上进行备份的完美开源解决方案。
它支持远程和本地系统。
从手册页:

rsnapshot节省的磁盘空间比您想象的要多得多。
所需的空间大小大约是一个完整备份的大小,再加上每个更改的其他文件的副本。

rsnapshot广泛使用了硬链接,因此,如果文件没有更改,则下一个快照就是指向相同文件的硬链接。
以下说明与Debian和Ubuntu Linux兼容。

本地备份系统上的必需软件

  • 快照
  • 同步
  • ssh客户端和ssh-keys
  • 第二块硬盘(建议使用RAID阵列)也可以使用主硬盘。
  • 使用ssh键配置的无密码登录
  • /disk1/backup备份目录
  • /disk1/backup/server1名为server1的远程服务器的备份目录
  • /disk1/backup/server2名为server2的远程服务器的备份目录
  • /disk1/backup/localhost本地服务器的备份目录

远程服务器上的必需软件

  • OpenSSH sshd服务器
  • 使用ssh键配置的无密码登录

步骤1:安装rsync和rsnapshot软件

使用apt-get命令安装rsync和rsnapshot软件包,执行:

$ sudo apt-get install rsync rsnapshot

输出示例:
使用apt-get命令安装rsnapshot

步骤2:配置无密码登录/基于公钥的登录

执行以下命令以在本地Linux系统上创建ssh-key:

# ssh-keygen -t rsa
# ssh-copy-id -i $HOME/.ssh/id_rsa.pub [email protected]:.ssh/authorized_keys2
##[*** or use scp command instead of ssh-copy-id ***]##
# scp .ssh/id_rsa.pub [email protected]:.ssh/authorized_keys2

了解如何配置基于RSA/DSA SSH公钥的身份验证。

步骤3:配置rsnapshot实用程序

配置文件位于/etc/rsnapshot.conf
配置文件需要在元素之间使用制表符,并且所有指令都必须在末尾加斜杠。
只需使用文本编辑器(例如vi或者gedit)打开配置文件:

# vi /etc/rsnapshot.conf

或者

$ sudo vi /etc/rsnapshot.conf

设置快照根目录:

snapshot_root	/disk1/backup/

请注意,您必须使用" [tab]"键将snapshot_root和/disk1 /分开,即,执行snapshot_root,单击一次[tab]键,然后执行/disk1/backup /。
所有快照都将存储在此根目录(/disk1/backup /)下。

配置备份策略

您可以每小时,每天,每周或者每月对本地和远程系统进行快照。
要每四个小时(一天六次)制作快照并保留第二组快照(每天拍摄一次并存储七天),请执行:

interval    hourly  6
interval    daily   7

随时根据您的备份需求调整配置。

指定本地和远程备份目录

找出内容如下:

###############################
### BACKUP POINTS / SCRIPTS ###
###############################

您需要注释掉/删除默认备份目录。
要将/home /,/etc /,/webroot /目录的快照复制到/disk1/backup/localhost,请执行:

backup	/home/	localhost/
backup	/etc/	localhost/
backup	/webroot/	localhost/

要将远程服务器1/home /,/etc /,/var/spool/mail /,/webroot /目录备份到/disk1/backup/server1,请执行:

backup	[email protected]:/home/	server1/
backup	[email protected]:/etc/	server1/
backup	[email protected]:/webroot/	server1/
backup	[email protected]:/var/spool/mail/	server1/
backup	[email protected]:/home/	server2/

保存并关闭文件。

测试配置文件中的错误

执行以下内容以测试您的配置文件是否存在错误

# rsnapshot configtest

输出:

Syntax OK

您还可以在测试模式下运行rsnapshot以显示其操作:

# rsnapshot -t hourly

步骤4:首次运行rsnapshot

要首次运行,请执行:

# rsnapshot hourly

步骤5:配置Cron作业

编辑/etc/cron.d/rsnapshot文件以设置备份快照作业。
这是rsnapshot的示例cron文件。
使用的值对应于/etc/rsnapshot.conf中的示例。
您还可以在此处设置备份点和许多其他内容。
要激活此cron文件,您必须取消注释以下几行。
随时根据您的需求进行调整。

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

有关UNIX/Linux下cronjob的更多信息,请参见crontab相关的常见问题解答。

如何从备份中排除文件?

rsnapshot允许您设置include和exclude参数(如果启用),直接将其直接传递给rsync。
如果您有多个包含/排除模式,请将每个模式放在单独的行上。
例如,

exclude_file /etc/rsnapshot.server1.conf

将排除文件列表追加到/etc/rsnapshot.server1.conf:

# vi /etc/rsnapshot.server1.conf

从备份中排除文件匹配模式:

var/lib/php/session/*
/var/spool/mail/nobody/*
cache/wp-cache-*.????
/var/logs/apache/access.log.*
/var/logs/apache/error.log.*
/linux-kernel/*
/tmp/cache/*
/var/lib/mysql/mysql.sock*
/tmp/php.socket-*
/tmp/*socket*

保存并关闭文件。

如何备份远程MySQL数据库?

您可以备份默认数据库目录/var/lib/mysql。
但是,您可以使用以下脚本备份远程或者本地MySQL数据库:

#!/bin/sh
NOW=$(date +"%d-%m-%Y")
# set mysql login info
MUSER="MySQL-UserNAME"                # Username
MPASS="MySQL-SERVER-PASSWORD"   # Password
MHOST="MySQL-SERVER-IP-ADDRESS"  # Server Name
# guess binary names 
MYSQL="$(which mysql)"
MYSQLDUMP="$(which mysqldump)"
GZIP="$(which gzip)"
 
# get all db names 
DBS="$($MYSQL -u $MUSER -h $MHOST -p$MPASS -Bse 'show databases')"
for db in $DBS
do
FILE=mysql-$db.$NOW-$(date +"%T").gz
$MYSQLDUMP -u $MUSER -h $MHOST -p$MPASS $db | $GZIP -9 > $FILE
done

现在将以下行添加到/etc/rsnapshot.conf文件:

backup_script	/root/scripts/mysql.backup.sh	server1/mysql/

如何还原备份?

您可以简单地使用常规的scp/rsync命令复制回文件。
在此示例中,将所有* .html文件还原到名为www-03.example.com的远程Web服务器:

rsync -av *.html [email protected]:/home/httpd/example/html/

如何查看备份?

只需cd到备份位置并运行ls命令:

# cd /disk1/backup/
# ls -l