linux使用rsync单向同步文件夹
本文最后更新于 2025年10月15日 中午
linux使用rsync单向同步文件夹
一、核心目标
将 源服务器 192.168.1.100 上的指定文件夹,单向、增量地同步到 目标服务器 192.168.1.200 的目标文件夹。
二、前置条件
网络连通性:确保源服务器
192.168.1.100可以通过 SSH 访问目标服务器192.168.1.200。权限:
- 在
192.168.1.100上,拥有对源文件夹的读取权限。 - 在
192.168.1.200上,拥有对目标文件夹的写入权限,以及通过 SSH 登录的用户(如user)和密码。
- 在
工具安装:
- 源服务器和目标服务器上都必须安装
rsync工具。(大多数 Linux 发行版默认安装)
1
2
3
4
5
6
7
8# 检查是否安装
rsync --version
# 如果未安装,则进行安装
# CentOS/RHEL
sudo yum install -y rsync
# Ubuntu/Debian
sudo apt install -y rsync- 源服务器和目标服务器上都必须安装
三、操作步骤(在源服务器 192.168.1.100 上执行)
1. 配置 SSH 免密登录(关键,用于自动化)
为了让定时任务(如 cron)能自动执行,需要配置从源服务器到目标服务器的免密 SSH 登录。
1 | |
2. 执行同步命令
在 源服务器 192.168.1.100 的命令行中,执行以下核心同步命令。
假设:
- 源目录:
/path/to/source_folder/ - 目标目录:
/path/to/target_folder/
1 | |
强烈建议在首次执行或修改参数后,先使用 --dry-run 进行模拟运行,确认无误后再去掉该参数执行真实同步。
1 | |
四、命令参数详解
| 参数 | 作用 |
|---|---|
rsync |
同步命令本身。 |
-a |
归档模式 (Archive)。这是一个复合参数,等同于 -rlptgoD。它会递归同步目录,并尽可能保留文件的权限、所有者、时间戳、符号链接等所有属性。这是最常用、最重要的参数。 |
-v |
详细模式 (Verbose)。显示同步过程中的详细信息,如正在同步哪些文件。便于监控和调试。 |
-z |
压缩模式 (Compress)。在传输过程中对文件进行压缩,可以减少网络带宽占用,加快同步速度。在内网带宽充足时,可省略此参数以略微提升 CPU 效率。 |
--delete |
删除目标端多余文件。这是实现“镜像同步”的关键。它会使目标目录严格与源目录保持一致。如果源目录删除了某个文件,下次同步时,目标目录的对应文件也会被删除。使用前请务必确认目标目录中没有需要保留的额外文件! |
--dry-run |
模拟运行。显示将要执行的操作,但不会实际复制或删除任何文件。强烈建议在正式执行前使用此参数进行测试。 |
/path/to/source_folder/ |
源目录。注意末尾的斜杠 /:如果加上斜杠,代表同步该目录内部的所有内容到目标目录;如果不加斜杠,代表将该目录本身同步到目标目录下。 |
user@192.168.1.200:/path/to/target_folder/ |
目标地址。格式为 [用户名]@[IP地址]:[目标路径]。 |
五、重要提示与最佳实践
路径末尾的斜杠
/:这是rsync中一个非常关键的细节。rsync ... /source/ /target/:将/source目录下的所有文件和子目录同步到/target目录中。rsync ... /source /target/:将/source目录本身同步到/target目录下,最终形成/target/source。
--delete参数的危险性:--delete是一个强大但有潜在风险的参数。如果目标目录中存在源目录没有的文件,它们会被无情删除。在对生产环境执行此操作前,务必通过--dry-run确认删除列表。自动化:此命令非常适合放入
crontab中,实现周期性同步。例如,每天凌晨 3 点同步一次:1
2# 在源服务器 192.168.1.100 上的 crontab
0 3 * * * /usr/bin/rsync -az --delete /path/to/source_folder/ user@192.168.1.200:/path/to/target_folder/ >> /var/log/rsync_sync.log 2>&1- 使用了
rsync的绝对路径/usr/bin/rsync,更稳定。 - 去掉了
-v参数,避免日志过于冗长。 - 将所有输出(包括错误)重定向到日志文件,便于排查。
- 使用了
日志记录:如上面的
cron示例,建议始终将同步日志记录下来,以便追踪同步历史和问题。
linux使用rsync单向同步文件夹
https://xinhaojin.github.io/2025/10/13/linux使用rsync单向同步文件夹/