概要
/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. 自动化脚本
结合 cron 或 inotify,你可以将同步过程自动化。以下是基于 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 默认是单向同步,不会反向同步目标文件至源服务器。