You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用rsync同步指定目录下所有子目录的.gz文件并保留目录结构

解决rsync同步指定子目录.gz文件的问题

问题原因分析

你之前尝试的两个命令都存在逻辑问题:

  • 第一个命令的过滤规则+ */*/*/*/*/*.gz硬编码了固定层级的目录路径,一旦目录结构变动就会失效,更关键的是rsync需要先获得目录的访问权限,否则根本无法深入子目录查找文件
  • 第二个命令只允许*.gz文件,但默认会拒绝所有未被明确允许的目录,导致rsync连子目录都不会进入,自然找不到目标文件

正确执行命令

使用以下命令即可实现需求,同时完整保留原目录结构:

rsync -avP -n -f "+ */" -f "+ *.gz" -f "- *" root@tt:/source/ /dest/

注意:源路径末尾的/必须加上,它表示同步/source目录下的内容,而非将/source目录本身同步到/dest中

规则详细说明

  • -f "+ */":允许遍历所有子目录,这是rsync能找到深层.gz文件的前提
  • -f "+ *.gz":匹配所有.gz格式的文件,允许同步这些目标文件
  • -f "- *":排除所有未被前面两条规则允许的文件和目录
  • -n:模拟运行模式,仅输出匹配结果不会实际同步文件,确认结果符合预期后可移除该参数执行真实同步
  • -avP:-a启用归档模式(保留文件权限、修改时间等属性),-v显示同步详细日志,-P显示传输进度并支持断点续传

验证步骤

执行带-n的命令后,若输出中能看到目标.gz文件的路径,说明规则匹配正确,此时去掉-n重新执行即可完成同步。

内容的提问来源于stack exchange,提问作者nothingisme

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 01:37:33