一、引言:部署前的“侦察兵”
在使用 rsync 同步 nginx 静态资源或配置文件之前,你是否曾有过这样的疑问:
- 目标服务器上 /var/www/html/ 目录里现在有哪些文件?
- 我即将推送的新版本是否会覆盖掉一些重要的临时文件?
- 上次同步是否真的成功了?
直接登录服务器用 ls 命令固然可行,但这破坏了自动化的流畅性。幸运的是,rsync 本身就内置了一个强大的功能——--list-only 选项,让你无需登录,就能像本地 ls 一样清晰地看到远程目录的全貌。
本文将详细介绍如何利用这个选项,并结合 ssh 和 daemon 两种模式,为你提供最实用的操作指南。
二、核心武器:--list-only选项
--list-only 是 rsync 的一个非常实用但常被忽视的选项。它的作用是:
- 仅列出源路径中的文件和目录。
- 不执行任何传输或修改操作。
- 输出格式与 rsync 在同步时的详细输出(-v)一致,包含文件权限、大小、时间戳等信息。
这使得它成为部署前检查和状态确认的完美工具。
三、实战:两种模式下的远程目录查看
场景一:通过 ssh 模式查看(最常用)
这是最安全、最常见的场景。假设你需要查看一台 nginx 服务器(ip: 192.168.1.100)上 /var/www/html/ 目录的内容。
基础命令
rsync -av --list-only user@192.168.1.100:/var/www/html/
-a: 归档模式,确保输出包含完整的文件属性(权限、时间等)。-v: 详细模式,让输出更易读。--list-only: 核心选项,只列出不传输。
示例输出
receiving incremental file list drwxr-xr-x 4,096 2026/06/20 10:30:22 . -rw-r--r-- 543 2026/06/19 15:22:10 index.html -rw-r--r-- 2,345 2026/06/18 09:11:05 app.js drwxr-xr-x 4,096 2026/06/15 14:00:00 static/
从输出中,你可以清晰地看到每个文件的权限、大小、修改时间和名称。
结合 ssh 密钥(免密)
如果你已经配置了 ssh 公钥认证,命令可以直接在脚本或 ci/cd 流水线中无交互地运行:
# 假设你的私钥在 ~/.ssh/nginx_deploy_key
rsync -av -e "ssh -i ~/.ssh/nginx_deploy_key" \
--list-only \
deploy_user@192.168.1.100:/var/www/html/场景二:通过 rsync daemon 模式查看
如果你的架构使用了 rsync 守护进程,查看方式略有不同。
假设服务端配置了一个名为 webdata 的模块,指向 /data/web/ 目录。
基础命令
# 如果模块不需要密码
rsync -av --list-only rsync://192.168.1.100/webdata/
# 如果模块需要密码,使用密码文件
rsync -av --password-file=/path/to/rsync.pass \
--list-only \
rsync://nginx_sync@192.168.1.100/webdata/这里的 uri 格式为 rsync://[user@]host[:port]/module/。
四、高级技巧:让输出更精准
--list-only 可以和 rsync 的其他过滤选项完美结合,实现更精细的“侦察”。
1. 仅列出特定类型的文件
例如,只想看所有的 .js 和 .css 文件:
rsync -av --list-only \
--include='*.js' \
--include='*.css' \
--exclude='*' \
user@192.168.1.100:/var/www/html/2. 递归深度控制
默认会递归列出所有子目录。如果只想看顶层目录,可以使用 --max-depth:
# 只列出 /var/www/html/ 下的直接子项,不进入子目录 rsync -av --list-only --max-depth=1 user@192.168.1.100:/var/www/html/
3. 与--dry-run的区别
很多同学会混淆 --list-only 和 --dry-run (-n)。
- --list-only: 只关心源(source),列出源路径的内容。目标路径甚至可以不存在。
- --dry-run: 关心源和目标的差异,模拟一次完整的同步过程,告诉你哪些文件会被创建、更新或删除。
对于单纯的“查看远程有什么”的需求,--list-only 是更直接、更高效的选择。
五、nginx 运维中的典型应用场景
- 部署前检查:在执行 rsync -av --delete ... 之前,先用 --list-only 看一眼目标目录,确认没有意外的重要文件会被 --delete 清除。
- 验证同步结果:同步任务完成后,再次使用 --list-only 对比源和目标的文件列表,快速验证一致性。
- ci/cd 流水线集成:在自动化脚本中加入此命令,作为部署流程的一个健康检查步骤,将输出记录到日志中供后续审计。
六、结语
到此这篇关于nginx中rsync查看远程目录的实现的文章就介绍到这了,更多相关nginx rsync查看远程目录内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论