Rsync将一台主Web服务器上的文件和目录同步到另一台备份服务器(最新推荐)
<div id="navCategory"><h5 class="catalogue">目录</h5><ul class="first_class_ul"><li><a href="#_label0">1.环境说明</a></li><li><a href="#_label1">2.设置无密码 SSH 登录</a></li><li><a href="#_label2">3.使用 Rsync 同步 Web 服务器数据</a></li><ul class="second_class_ul"><li><a href="#_lab2_2_0">1)将文件同步到备份服务器目录</a></li><li><a href="#_lab2_2_1">2)镜像 Web 服务器目录</a></li></ul><li><a href="#_label3">4.使用 Cron 自动化备份</a></li><ul class="second_class_ul"></ul><li><a href="#_label4">5.验证备份</a></li><ul class="second_class_ul"></ul></ul></div><p>在管理 Web 服务器时,确保数据安全且在发生故障时能够快速恢复至关重要,备份和镜像 Web 服务器数据最可靠的方法之一是使用 <code>rsync</code>。</p><p>Rsync 工具可以帮助在两台服务器之间同步文件和目录,非常适合用于创建 Web 服务器数据的备份和镜像。</p>
<p>下面将详细介绍使用 <code>rsync</code> 将 Web 服务器与备份服务器进行同步。同时介绍设置无密码登录,通过 <code>cron</code> 定时任务实现自动化的同步过程。</p>
<p class="maodian"><a name="_label0"></a></p><h2>1.环境说明</h2>
<p>现在有两台服务器,一台为主 WEB 服务器,另一台为备份服器,其关键信息如下表所示:</p>
<table><tbody><tr><th>服务器类型</th><th>IP 地址</th><th>主机名</th></tr><tr><td><p>主 Web 服务器</p></td><td><p>192.168.250.100</p></td><td><p>web.test.com</p></td></tr><tr><td><p>备份服务器</p></td><td><p>192.168.250.200</p></td><td><p>backup.test.com</p></td></tr></tbody></table>
<p>其拓扑图如下:</p>
<p></p>
<p style="text-align:center"><img alt="图片" src="https://img.jbzj.com/file_images/article/202506/202506050949171.png" /></p>
<p>注:两台服务器之间应启用 SSH 访问,这将用于通过 SSH 密钥设置无密码登录,从而实现顺畅的自动化操作。</p>
<p class="maodian"><a name="_label1"></a></p><h2>2.设置无密码 SSH 登录</h2>
<p>为了通过 <code>cron</code> 自动化同步过程,需要从主 Web 服务器(主服务器)到备份服务器设置无密码 <code>SSH</code> 登录,这将允许 <code>rsync</code> 在每次运行时无需输入密码。</p>
<p>登录到主 Web 服务器(web.test.com),生成 SSH 密钥,并确保接受默认的文件位置且不设置密钥密码。</p>
<div class="jb51code"><pre class="brush:bash;">ssh-keygen -t rsa -b 2048</pre></div>
<p>接下来,使用 <code>ssh-copy-id</code> 命令将公钥复制到备份服务器:</p>
<div class="jb51code"><pre class="brush:bash;">ssh-copy-id admin@192.168.250.200</pre></div>
<p>最后,通过从主 Web 服务器登录到备份服务器来测试连接:</p>
<div class="jb51code"><pre class="brush:bash;">ssh admin@192.168.250.200</pre></div>
<p>如果无需输入密码即可登录,则表示设置成功。</p>
<p class="maodian"><a name="_label2"></a></p><h2>3.使用 Rsync 同步 Web 服务器数据</h2>
<p>现在我们已经设置了无密码 SSH,可以使用 rsync 将 Web 服务器的数据同步到备份服务器。Web 服务器的数据通常存储在 <code>/var/www/html/</code> 目录中,我们将使用该目录进行备份和镜像。</p>
<p><strong># 基本的 Rsync 命令用法补充</strong></p>
<p>要在主 Web 服务器(web.test.com)上执行一次性备份,请运行以下命令:</p>
<div class="jb51code"><pre class="brush:bash;">rsync -avz /var/www/html/ user@host_ip:/path/to/backup/directory</pre></div>
<p>上述命令的解释如下:</p>
<ul><li><code>-a</code> 表示“归档模式”,可保留文件的权限、时间戳和其他属性。</li><li><code>-v</code> 启用详细输出,以便您可以看到正在传输的文件。</li><li><code>-z</code> 启用压缩,以减少数据传输量。</li></ul>
<p class="maodian"><a name="_lab2_2_0"></a></p><h3>1)将文件同步到备份服务器目录</h3>
<p>将 <code>/path/to/backup/directory</code> 替换为备份服务器(这里假设备份服务器的备份目录在<code>/data/backup/web</code>下)上规划存储备份的实际路径。</p>
<p>例如:</p>
<div class="jb51code"><pre class="brush:bash;">rsync -avz /var/www/html/ admin@192.168.250.200:/data/backup/web</pre></div>
<p class="maodian"><a name="_lab2_2_1"></a></p><h3>2)镜像 Web 服务器目录</h3>
<p>如果需要镜像目录(即使备份与源目录完全一致),可以使用 <code>--delete</code> 选项:</p>
<div class="jb51code"><pre class="brush:bash;">rsync -avz --delete /var/www/html/ admin@192.168.250.200:/data/backup/web</pre></div>
<p><code>--delete</code>参数会删除备份目录中不再存在于 Web 服务器上的文件,确保两个目录完全一致。</p>
<p class="maodian"><a name="_label3"></a></p><h2>4.使用 Cron 自动化备份</h2>
<p>为了确保定期备份,我们可以使用 <code>cron</code> 定时任务自动运行 <code>rsync</code> 命令,这样备份过程将在指定的时间运行,例如每天午夜。</p>
<p>在主 Web 服务器(web.test.com)上,通过运行以下命令打开 <code>crontab</code> 文件:</p>
<div class="jb51code"><pre class="brush:bash;">crontab -e</pre></div>
<p>要将备份设置为每天<code>00:00</code>运行,请在 <code>crontab</code> 中添加以下行:</p>
<div class="jb51code"><pre class="brush:bash;">0 0 * * * rsync -avz --delete /var/www/html/ admin@192.168.250.200:/data/backup/web</pre></div>
<p>保存 <code>crontab</code> 文件并退出,这样 <code>cron</code> 任务将每天自动在凌晨 <code>12:00</code> 运行(半夜时分)。</p>
<p>也可以根据需要调整时间,比如,要改成每天凌晨 <code>1:00</code> 运行,可以这样修改:</p>
<div class="jb51code"><pre class="brush:bash;">0 1 * * * rsync -avz --delete /var/www/html/ admin@192.168.250.200:/data/backup/web</pre></div>
<p class="maodian"><a name="_label4"></a></p><h2>5.验证备份</h2>
<p>设置好 <code>cron</code>任务后,可以通过检查系统日志来验证 <code>cron</code> 任务是否按预期运行:</p>
<div class="jb51code"><pre class="brush:bash;">grep CRON /var/log/syslog</pre></div>
<p>登录到备份服务器(backup.test.com),检查 <code>/data/backup/web</code> 目录中的文件是否与主 Web 服务器上的 <code>/var/www/html/</code> 目录中的文件一致。</p>
<p>我们还可以通过在主 Web 服务器上删除一个文件,然后验证在下一次 <code>rsync</code> 运行后该文件是否从备份目录中删除,来进行测试。</p>
<p>到此这篇关于Rsync将一台主Web服务器上的文件和目录同步到另一台备份服务器的文章就介绍到这了,更多相关Rsync Web服务器文件同步备份内容请搜索琼殿技术社区以前的文章或继续浏览下面的相关文章希望大家以后多多支持琼殿技术社区!</p>
頁:
[1]