1776 字
9 分钟
CentOS7服务器数据备份:rsync同步教程与定时任务配置
2023-03-13

在CentOS7上,您可以使用rsync命令将A机的/www/home目录备份到B机,并使用cron守护进程定期同步两台机器的目录。

以下是一般步骤:

方案1#

在B机上安装rsync:

sudo yum install rsync

在B机上创建一个目录来存储A机的备份文件:

sudo mkdir /backup

在B机上使用rsync命令将A机的/www/home目录备份到/backup目录中:

sudo rsync -avz --delete <A机的用户名>@<A机的IP地址>:/www/home /backup

其中,<A机的用户名>是A机的用户名,<A机的IP地址>是A机的IP地址。

在B机上使用crontab命令创建一个cron定时任务来自动同步A机和B机的目录:

crontab -e

然后添加以下行:

* * * * * rsync -avz --delete <A机的用户名>@<A机的IP地址>:/www/home /backup

其中” *“表示每一分钟都执行
可以使用类似于以下格式的语法将计划任务设置为每隔N个小时或N天执行:

每隔N小时:0 /N
每隔N天:0 0 /N *
其中,*/N表示每隔N个单位执行一次任务,0表示小时或分钟为0,*表示任意的月份、日期或星期。例如,要将计划任务设置为每隔6小时同步一次,可以使用以下命令:

0 */6 * * * rsync -avz --delete <A机的用户名>@<A机的IP地址>:/www/home /backup

如果要将计划任务设置为每隔2天同步一次,可以使用以下命令:

0 0 */2 * * rsync -avz --delete <A机的用户名>@<A机的IP地址>:/www/home /backup

如果A机的SSH更改过端口
你需要在rsync命令中指定SSH服务的端口号,例如

sudo rsync -avz --delete -e "ssh -p 2222" <A机的用户名>@<A机的IP地址>:/www/home /backup

其中2222是SSH服务监听的端口号

—delete 选项指示 rsync 在同步文件时删除目标端(也就是B机)上那些在源端(也就是A机)不存在的文件或目录。

换句话说,如果B机上存在的某个文件或目录在A机上已经不存在了,那么使用 —delete 选项时,在同步过程中,这个文件或目录也会被删除。

在执行rsync命令备份A机的/www/home目录到B机时,需要在B机上提供A机的用户名和密码。您可以使用以下命令在B机上执行rsync命令,并提供A机的用户名和密码:

sudo rsync -avz --delete -e 'sshpass -p <A机的密码> ssh -o StrictHostKeyChecking=no' <A机的用户名>@<A机的IP地址>:/www/home /backup

如果改过端口号

rsync -avz --delete -e 'sshpass -p <A机的密码> ssh -o StrictHostKeyChecking=no -p <A机的端口号>' <A机的用户名>@<A机的IP地址>:/www/home /backup

其中,<A机的密码>是A机的用户密码,<A机的端口号>是A机的ssh<A机的用户名>是A机的用户名,<A机的IP地址>是A机的IP地址。

需要注意的是,使用此方法会将A机的密码明文存储在B机上的命令历史记录中,可能会存在安全风险。因此,建议使用SSH公钥认证或其他更安全的方式来进行身份验证。

在计划任务自动备份时,可以在B机上使用ssh密钥进行自动连接A机,无需手动输入密码。具体步骤如下:

A方案:

可以按照以下方式检查B机上是否已安装sshpass:

which sshpass

如果这个命令没有找到sshpass,则需要安装sshpass。您可以使用以下命令安装:

sudo yum install sshpass

在B机上使用crontab命令创建一个cron定时任务来自动同步A机和B机的目录:

crontab -e

然后添加以下行:

* * * * * rsync -avz --delete -e 'sshpass -p <A机的密码> ssh -o StrictHostKeyChecking=no' <A机的用户名>@<A机的IP地址>:/www/home /backup

如果更改过端口号

* * * * * rsync -avz --delete -e 'sshpass -p <A机的密码> ssh -o StrictHostKeyChecking=no -p <是A机的端口号>' <A机的用户名>@<A机的IP地址>:/www/home /backup

B方案:

在B机上生成ssh密钥:使用以下命令在B机上生成ssh密钥:

ssh-keygen -t rsa

按照提示输入密钥文件的保存路径和密码,或者直接按回车使用默认值。

将ssh公钥复制到A机:使用以下命令将B机上生成的ssh公钥复制到A机上:

ssh-copy-id -i ~/.ssh/id_rsa.pub root@A机IP

将A机IP替换为A机的IP地址。然后输入root用户的密码进行登录。如果连接成功,B机的ssh公钥将自动添加到A机的authorized_keys文件中,这将允许B机使用ssh密钥进行自动连接A机。

测试ssh连接:使用以下命令在B机上测试ssh连接是否正常:

ssh root@A机IP

如果连接成功,则无需手动输入密码即可登录A机。

设置计划任务:在B机上使用crontab命令设置定时任务,并将备份命令添加到计划任务中。例如,以下命令将每天凌晨3点自动备份A机的www/home目录到B机的/backup目录中:

0 3 * * * rsync -avz -e ssh root@A机IP:/var/www/home/ /backup

将A机IP替换为A机的IP地址,/var/www/home/替换为要备份的目录,/backup替换为B机中备份目录的路径。注意,在计划任务中使用ssh连接A机时,无需输入密码即可自动登录。

注意,使用ssh密钥进行认证登录比使用密码更加安全,建议在实际生产环境中使用ssh密钥进行自动连接。

方案2#

可以使用rsync命令实现A机的www/home目录同步到B机上,并且可以设置自动同步,具体步骤如下:

在B机上安装rsync命令,如果已经安装则无需重复安装。

在A机上编辑rsync的配置文件 /etc/rsyncd.conf,添加以下内容:

[www_home]
path = /www/home
comment = www home directory
read only = no
auth users = backupUser
secrets file = /etc/rsyncd.secrets

在A机上创建rsyncd.secrets文件,并添加以下内容:

backupUser:password

其中,backupUser为设置的用户名,password为对应的密码。

在B机上创建目录 /backup/www_home。

在B机上执行以下命令:

rsync -avz --delete backupUser@A机IP::www_home /backup/www_home

其中,A机IP为A机的IP地址,www_home为在配置文件中设置的模块名,/backup/www_home为B机上用于存储备份的目录。

在B机上创建一个名为backup.sh的脚本文件,并添加以下内容:

#!/bin/bash
/usr/bin/rsync -avz --delete backupUser@A机IP::www_home /backup/www_home

其中,A机IP为A机的IP地址,www_home为在配置文件中设置的模块名,/backup/www_home为B机上用于存储备份的目录。

将backup.sh文件复制到/etc/cron.daily目录下,并赋予执行权限:

cp backup.sh /etc/cron.daily/
chmod +x /etc/cron.daily/backup.sh

现在,A机www/home目录就会自动同步到B机上了。可以使用crontab命令修改定时任务的时间间隔。

CentOS7服务器数据备份:rsync同步教程与定时任务配置
https://blog.wlens.top/posts/两台服务器同步备份/
作者
Lao Wang
发布于
2023-03-13
许可协议
CC BY-NC-SA 4.0