如何在Linux中使用Rsync唤醒备份Nas服务器和镜像文件
时间:2020-01-09 10:39:57 来源:igfitidea点击:
在本快速教程中,您将学习如何在Debian或Ubuntu Linux中使用rsync设置文件镜像。
服务器配置
------------+ +----------- nas01 | |nas02 main | |backup server | |server 192.168.1.10| |192.168.1.11 ------------+ +------------
在此设置中,
- nas01:此盒由Debian Linux驱动。该服务器始终处于开机状态,并且使用rsnapshot命令行实用程序进行每小时,每天,每周和每月的备份。您必须在nas01服务器上设置rsnapshot。
- nas02:我们的辅助备份服务器。您可以运行Linux + BTRFS或FreeBSD + ZFS或您选择的任何其他Unix。我只是将使用Debian Linux进行演示。
配置要求
- 在nas01服务器上设置rsnapshot备份服务器。
- 在nas01和nas02服务器上更新/etc/hosts文件,如下所示:
192.168.1.10 nas01 192.168.1.11 nas02
- 在nas01和nas02服务器之间设置基于ssh公钥和较少密码的身份验证。
- 打开nas02服务器。进入BIOS。查找电源管理选项。您将看到一个清晰直观的选项,标记为"局域网唤醒"。打开它。接下来,启动nas02服务器并编辑/etc/network/interfaces文件。如下更新:
## eth0 config with wol setting auto eth0 allow-hotplug eth0 iface eth0 inet static address 192.168.1.11 netmask 255.255.255.0 network 192.168.1.0 gateway 192.168.1.254 up /sbin/ethtool -s eth0 wol g
nas01设置(所有命令必须在nas01上运行)
步骤1:/root/bin/wakeup.nas02
创建一个名为/root/bin/wakeup.nas02的shell脚本:
#!/bin/bash # wakeup.nas02 : Wake up nas02 server # Author : www.theitroad.local under GPL v.2.x+ # ----------------------------------------- # Secondary Server Name/IP address server="nas02" # Secondary Server Mac servermac="00:40:63:ff:2d:e6" # See if the server is alive or sleeping, if sleeping send magic packet to wake the server XD ping -W 1 -c4 -q $server >&/dev/null [ $? -eq 0 ] || /usr/bin/wakeonlan $servermac >&/dev/null
步骤2:/root/bin/mirror.nas02
创建另一个名为/root/bin/mirror.nas02的shell脚本:
#!/bin/bash # mirror.nas02 : File mirroring script. Also shutdown the nas02 server when done. # Author : www.theitroad.local under GPL v.2.x+ # ----------------------------------------- # Secondary server name or IP address t="nas02" # Backup source on nas01 # Must be same as 'snapshot_root' set in rsnapshot.conf s="/backups/personal" # Secondary nas02 server backup directory # I am using BTRFS on nas02 but you can use FreeBSD+ZFS too d="root@${t}:/backups/" # Path _rsync="/usr/bin/rsync" _ssh="/usr/bin/ssh" # Rsync args _args='-a -H --progress --delete --numeric-ids --relative --delete-excluded --rsh=/usr/bin/ssh' # Is the nas02 server alive? If so start mirroring from nas01:$s ==- nas02:$d # And when done shutdown the secondary nas02 server to saver power/electricity bills. ping -W 1 -c4 -q $t >&/dev/null [ $? -eq 0 ] && { $_rsync $_args ${s} ${d} && $_ssh root@${t} "sync && sync && /sbin/shutdown -h 0"; }
步骤3:更新/etc/rsnapshot.conf文件
缺省rsnapshot配置文件位于/etc/rsnapshot.conf。
编辑文件并更新以下两个指令:
# Specify the path to a script to run right before rsnapshot syncs files # Wake up the nas02 server from sleep i.e. power on the server cmd_preexec /root/bin/wakeup.nas02 # Specify the path to a script to run right after rsnapshot syncs files # Mirror all nas01 files using this script to nas02 and shutdown nas02 server # when done. cmd_postexec /root/bin/mirror.nas02
保存并关闭文件。
运行语法检查配置文件:
# rsnapshot configtest
输出示例:
Syntax OK
步骤4:在nas01服务器上生成SSH密钥
在nas01服务器上运行以下命令以生成SSH密钥:
# ssh-keygen
按Enter键接受默认设置并跳过密码。
接下来,将/root/.ssh/id_rsa.pub文件复制到nas02服务器,运行:
# ssh-copy-id root@nas02
确认您可以不使用密码登录:
# ssh root@nas02 # ssh root@nas02 date # ssh root@nas02 uptime
现在,我们已完成所有配置并准备进行测试。
步骤5:测试
在nas01上执行以下命令:
# rsnapshot -vvv hourly
正在进行文件镜像
您需要等待,直到我们的脚本同步了所有文件。
接下来,验证作业是否成功完成:
# tail -f /var/log/messages # tail -f /var/log/rsnapshot
输出示例:
Sep 16 23:07:21 nas01 rsnapshot[2531]: /usr/bin/rsnapshot -vvv hourly: completed successfully Sep 17 02:15:27 nas01 rsnapshot[3686]: /usr/bin/rsnapshot -vvv hourly: completed successfully
步骤6:在nas01上设置cronjob
Cron作业用于安排要定期执行的命令。
您可以设置命令或脚本,这些命令或脚本将在设定的时间重复运行。
我将设置一个cronjob以将我的文件自动同步到nas02。
这是一个示例/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. # # 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