在CentOS上安装rsnapshot
为IT支持公司工作我需要一个自动备份一堆Linux服务器的解决方案,本指南将引导您在CentOS上设置rsnapshot,以进行自动rsync&ssh二进制差异备份。
在CentOS / RHEL上安装rsnapshot需要EPEL存储库,请遵循我们在CentOS / RHEL上安装EPEL的指南,当使用epel repo时,我建议使用YUM优先级 。
安装epel repo后,以root身份输入以下内容:
yum install rsnapshot
这将安装Rsnapshot并拉下它所依赖的任何包。
打开文件/etc/rsnapshot.conf
,并选择文本编辑器(我使用vi),我们来看看第一节snapshot_root
这是rsnapshot存储其备份的位置。 默认情况下,它将它们放在根目录中,但是我已将我的更改为/ backup / snapshots /
。
# All snapshots will be stored under this root directory. # snapshot_root /backup/snapshots/
接下来我取消注释no_create_root 1
; 这将停止创建snapshot_root目录的rsnapshot(意味着您必须自己创建它)。 这样做的好处是,如果您备份到USB驱动器,并且您忘记连接它,rsnapshot将不会备份到填充驱动器空间的安装点,并可能导致服务器崩溃(如果您已经分区不正确)。
# If no_create_root is enabled, rsnapshot will not automatically create the # snapshot_root directory. This is particularly useful if you are backing # up to removable media, such as a FireWire or USB drive. # no_create_root 1
我们正在使用Linux,所以取消注释cmd_cp
行。
# LINUX USERS: Be sure to uncomment "cmd_cp". This gives you extra features. # EVERYONE ELSE: Leave "cmd_cp" commented out for compatibility. # # See the README file or the man page for more details. # cmd_cp /bin/cp
下一个取消注释cmd_ssh
并给它ssh二进制文件的正确路径。
# Uncomment this to enable remote ssh backups over rsync. # cmd_ssh /usr/bin/ssh
我取消注释du选项,酷的小工具,显示您的每个快照的大小。 (记住,如果你刚刚在快照目录中做了du -sh *
,那么由于硬链接,它会读取错误)。
# Uncomment this to specify the path to "du" for disk usage checks. # If you have an older version of "du", you may also want to check the # "du_args" parameter below. # cmd_du /usr/bin/du
这使我们进入备份间隔,您可以看到我保留了默认值,所以rsnapshot将保留6份我的小时备份,然后再开始编写我的旧版本,7份我的每日备份,每周4次,每月3次备份! 值得注意的是,rsnapshot不会在snapshot_root中创建hour.0之前的daily.0备份,与每周和每月相同。
######################################### # BACKUP INTERVALS # # Must be unique and in ascending order # # i.e. hourly, daily, weekly, etc. # ######################################### interval hourly 6 interval daily 7 interval weekly 4 interval monthly 3
全局选项
这些默认值通常是正常的,但是我想要更多的冗长,直到我很高兴备份系统正在工作。 我将设置更改为4而不是3,4在命令行上显示命令,就像手动输入一样,这对我来说足够好了!
# Verbose level, 1 through 5. # 1 Quiet Print fatal errors only # 2 Default Print errors and warnings only # 3 Verbose Show equivalent shell commands being executed # 4 Extra Verbose Show extra verbose information # 5 Debug mode Everything # verbose
日志文件
,我取消了这个注释,因为日志总是方便地找出出了什么问题。
# If you enable this, data will be written to the file you specify. The # amount of data written is controlled by the "loglevel" parameter. # logfile /var/log/rsnapshot
排除
- 在运行我的第一个备份后,显而易见,我的家庭目录中有一堆VMWare磁盘镜像文件,所以我排除了他们:
# The include and exclude parameters, if enabled, simply get passed directly # to rsync. If you have multiple include/exclude patterns, put each one on a # separate line. Please look up the --include and --exclude options in the # rsync man page for more details on how to specify file name patterns. # #include ??? #include ??? #exclude ??? exclude /home/keith/vmware-disks/
接下来我配置的是备份点,我想从每台机器备份,从localhost开始。
############################### ### BACKUP POINTS / SCRIPTS ### ############################### # LOCALHOST backup /home/ localhost/ backup /etc/ localhost/ backup /usr/local/ localhost/ backup /var/log/ localhost/ backup /srv/ localhost/ backup /boot/ localhost/ backup /opt/ localhost/
现在我要备份我的电子邮件服务器- 死亡之星
,所以我配置了我的备份服务器,以通过SSH提取数据(有点像那个Star Destroyer在千禧Falcon拉着它的拖拉机梁,是的... ... )。
backup root@the-death-star.techspotting.org:/home/ the-death-star/ backup root@the-death-star.techspotting.org:/etc/ the-death-star/ backup root@the-death-star.techspotting.org:/usr/local/bin/ the-death-star/
这是配置文件编辑的结束,现在是时候给你的配置一个测试:
rsnapshot configtest
这应该回来,说语法OK
,除非你搞砸了一些东西,在这种情况下,它会告诉你的错误线,所以回去修复它!
SSH密钥
通过SSH可以很好地吸引数据,但是我们需要能够自动登录到我们的远程服务器,我们不能仅仅抓住数据并将其拖到我们的服务器上,你认为这是拖拉机?
我对我的服务器使用远程root登录,因为我正在备份像/ etc / passwd
这样只能由root读取的位置的文件,是的,有这方面的方法,但是我不希望这个文件复杂化。 我会在将来做一个单独的博客文章,并链接到这里。
所以我们需要设置没有密码的SSH密钥,否则我们将在每次备份运行密码时得到提示。 所以让我开始为您创建一些基于密钥的认证的SSH密钥。
创建密钥对,这将创建公钥和私钥(永远不要给你的私钥!)。
ssh-keygen -t rsa
接受所有默认值,只需在输入时要求您输入密码即可:
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
您现在应该在/root/.ssh/中
有一组密钥。 现在我们需要将它们复制到我们要登录的远程机器上,在这种情况下是-death-star.techspotting.org
,所以这将是命令:
ssh-copy-id -i ~/.ssh/id_rsa.pub root@the-death-star.techspotting.org
然后,您将收到远程主机上您帐户密码的提示,然后输入,ssh-copy-id将密钥复制到正确的目录,并排除正确的文件系统权限,呵呵?
给它一个测试,并确保它的工作:
ssh the-death-star.techspotting.org
如果你看/etc/cron.d/rsnapshot
你应该看到一个这样的文件:
# This is a sample cron file for rsnapshot. # The values used correspond to the examples in /etc/rsnapshot.conf. # There you can also set the backup points and many other things. # # To activate this cron file you have to uncomment the lines below. # Feel free to adapt it to your needs. # 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配置(我是)删除注释,使其看起来像这样:
# This is a sample cron file for rsnapshot. # The values used correspond to the examples in /etc/rsnapshot.conf. # There you can also set the backup points and many other things. # # To activate this cron file you have to uncomment the lines below. # Feel free to adapt it to your needs. 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来使用rsnapshot备份你的文件,你最好确保它的工作!
rsnapshot -t hourly
检查一切看起来真实,没有什么讨厌会发生,每天,每周,每月重复。
现在是第一次备份的时候了!
rsnapshot hourly
如果您将冗长度设置为4(可选),您将可以看到所有备份的文件在屏幕上飞行! 第一个备份必须移动所有文件的snapshot_root,这将需要一些时间,这取决于您的机器/连接的速度,可能是一个很好的时间来抓住另一个咖啡。
你应该开始看到你的snapshot_root文件,几个星期后你应该看到一堆小时。*
, 每天*
, 每周*
这是我的snapshot_root的样子:
/backup/snapshots# ls -l
total 48
drwxr-xr-x 3 root root 4096 2010-03-21 18:19 daily.0
drwxr-xr-x 3 root root 4096 2010-03-21 18:19 daily.1
drwxr-xr-x 3 root root 4096 2010-03-21 18:18 daily.2
drwxr-xr-x 3 root root 4096 2010-03-21 17:57 daily.3
drwxr-xr-x 3 root root 4096 2010-03-21 17:57 daily.4
drwxr-xr-x 3 root root 4096 2010-03-21 17:56 daily.5
drwxr-xr-x 3 root root 4096 2010-03-21 18:20 hourly.0
drwxr-xr-x 3 root root 4096 2010-03-21 18:19 hourly.1
drwxr-xr-x 3 root root 4096 2010-03-21 18:19 hourly.2
drwxr-xr-x 3 root root 4096 2010-03-21 18:19 hourly.3
drwxr-xr-x 3 root root 4096 2010-03-21 18:19 hourly.4
drwxr-xr-x 3 root root 4096 2010-03-21 17:56 weekly.0
这一切都完成了,任何问题都给我留下了一个评论! 我会尽力在同一天为你答复。 :)
享受您的服务器备份的安心!