Rsync 的单向同步

概要

网站上面板的配置。同步需要同步这几个的文件夹,以及网站的文件。

PixPin_2024-11-17_20-36-27.png

/www/server/panel/vhost/cert
/www/server/panel/vhost/letsencrypt
/www/server/panel/vhost/nginx
/www/server/panel/vhost/open_basedir/nginx
/www/server/panel/vhost/openlitespeed
/www/server/panel/vhost/openlitespeed/detail
/www/server/panel/vhost/openlitespeed/detail/ssl
/www/server/panel/vhost/openlitespeed/redirect
/www/server/panel/vhost/rewrite

Rsync 同步设置


要设置 Rsync 的单向同步,确保源服务器的文件能够同步到目标服务器,但不反向同步修改,从而避免目标服务器的更改影响源服务器,可以按照以下步骤进行配置。

1. 基本的单向同步使用Rsync

Rsync 的最基本命令格式是:

rsync -av --delete /source/directory/ user@target_server:/target/directory/

1.-a (archive): 保持文件属性(如权限、时间戳、符号链接等)。

2.-v (verbose): 显示详细输出,帮助调试。

3.--delete: 删除目标服务器上源目录已删除的文件,这样可以确保源和目标完全一致。

这条命令会将源服务器的 /source/directory/ 目录下的内容同步到目标服务器的 /target/directory/,但不会反向同步目标到源。

示例:

假设源服务器的路径是 /var/www/html/,目标服务器的路径是 /data/backup/,则可以使用以下命令:

rsync -av --delete /var/www/html/ user@target_server:/data/backup/

4.上面的命令会将源服务器上的 /var/www/html/ 中的所有文件和目录同步到目标服务器上的 /data/backup/

5.注意: 源路径最后的 / 非常重要。如果你没有加上 /,则会把 html 目录本身同步到目标,而加上 / 后则只同步目录中的内容。

2. 配置定期同步(使用Cron定时任务)

如果你希望定期执行单向同步任务,可以将 rsync 命令加入到 cron 定时任务中。这样,源服务器上的文件会按照预定的时间自动同步到目标服务器。

编辑 cron 定时任务:

crontab -e

然后在 cron 配置中加入如下行:

*/10 * * * * rsync -av --delete /var/www/html/ user@target_server:/data/backup/

这条配置会每 10 分钟 自动执行一次同步任务。

3. 使用Inotify实现实时同步(可选)

如果你希望实现实时同步,可以结合 inotify 来监控源服务器的目录变化,并自动触发 rsync 同步。你可以使用 inotifywait 来监听目录变更事件。

首先,安装 inotify-tools(如果没有安装):

sudo apt-get install inotify-tools   # 对于Debian/Ubuntu系统
sudo yum install inotify-tools       # 对于CentOS系统

然后,你可以编写一个简单的脚本来监听源目录的变化,并触发 rsync 同步:

#!/bin/bash
SOURCE_DIR="/var/www/html/"
TARGET_DIR="user@target_server:/data/backup/"
while inotifywait -r -e modify,create,delete $SOURCE_DIR; do
    rsync -av --delete $SOURCE_DIR $TARGET_DIR
done

4. 阻止目标服务器的更改影响源服务器

确保同步的方向是单向的,避免目标服务器的文件被反向同步回源服务器。这可以通过以下方法来保证:

1.不设置双向同步:如前所述,rsync 默认是单向同步的,只会将源目录的内容同步到目标目录,不会从目标同步回源。

2.使用 --exclude 排除目标目录文件:如果你在目标服务器上不希望某些文件被修改后影响源服务器,可以通过排除规则来避免同步某些目录或文件。例如,排除目标服务器上的 *.bak 文件:

  rsync -av --delete --exclude='*.bak' /var/www/html/ user@target_server:/data/backup/

5. 自动化脚本

结合 croninotify,你可以将同步过程自动化。以下是基于 cron rsync 的一个简单自动化脚本示例:

#!/bin/bash
SOURCE_DIR="/var/www/html/"
TARGET_DIR="user@target_server:/data/backup/"
# Rsync single direction sync (source to target)
rsync -av --delete $SOURCE_DIR $TARGET_DIR

将这个脚本保存为 sync_files.sh,并通过 cron 定时运行。

6. 总结:

1.基本命令:使用 rsync -av --delete 命令来同步文件,并确保同步方向为源到目标。

2.定期同步:使用 cron 定时任务执行同步,确保定期将源服务器的文件同步到目标服务器。

3.实时同步(可选):通过 inotify 监控文件变化,触发同步操作。

4.避免反向同步:rsync 默认是单向同步,不会反向同步目标文件至源服务器。

    本文标题:《Rsync 的单向同步》作者:黑枫棉
    原文链接:https://cayteno.top/?id=14
    特别注明外均为原创,转载请注明。

    分享到微信

    扫描二维码

    可在微信查看或分享至朋友圈。

    下一篇: 未命名

    相关文章

    发表评论:

    ◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

    站点信息

    • 文章总数:17
    • 页面总数:1
    • 分类总数:6
    • 标签总数:2
    • 评论总数:0
    • 浏览总数:3519
    «    2025年6月    »
    1
    2345678
    9101112131415
    16171819202122
    23242526272829
    30

    控制面板

    您好,欢迎到访网站!
      查看权限

    网站分类

    搜索

    文章归档