rsync 拷贝的理解问题

本文详细解析了Rsync命令中使用带*与不带*的区别,解释了带*如何影响文件拷贝过程及目的目录中文件的保留情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

rsync  拷贝的理解问题 


问题:这两条命令的区别

rsync -av --delete --exclude-from="logs" /tmp/src_dir/*  /tmp/dest_dir/
rsync -av --delete --exclude-from="logs" /tmp/src_dir/  /tmp/dest_dir/


源目录:src_dir/
包含文件: file_a  file_b file_c
目标目录dest_dir/
包含文件: file_d


理解:
不带*  说明 你拷贝的源目录是  /tmp/src_dir/
带*     说明  你拷贝的源目录是这个/tmp/src_dir/  目录  下面的子文件和目录



疑问:
那为啥 加上--delete 以后不带*的  会把 目的目录——中存在的 而源目录——不存在的文件 删除掉  带*的却不删除呢?



解释:
带了 * ,就是目录下所有的可见文件一一进行rsync 拷贝
隐藏文件都不会rsync



/tmp/src_dir/*  包含所有源目录中的可见文件file_a  file_b file_c ,但是不包含目标文件夹中的 file_d


所以你执行 rsync -av --delete --exclude-from="logs" /tmp/src_dir/  /tmp/dest_dir/ 后,
rsync 工具会理解为  目录  /tmp/dest_dir/  是目录/tmp/src_dir/  的一个完整镜像,所以他会把  file_a  file_b file_c  拷贝到 /tmp/dest_dir/并删除里面的file_d(因为他认为file_d,是以前存在,但是已经被你删除掉的文件)。


rsync -av --delete --exclude-from="logs" /tmp/src_dir/*  /tmp/dest_dir/

rsync 工具会理解为 目录 /tmp/src_dir/下面的文件 需要备份拷贝到 /tmp/dest_dir/ ,所以他会把  file_a  file_b file_c  拷贝到 /tmp/dest_dir/,并且会保留原来的file_d(因为你只是把文件备份到我这里而已)。



其中
src_dir/*   表示的是      
src_dir/file_src2
src_dir/file_src

就相当于  rsync -av --delete --exclude-from="logs" /tmp/src_dir/file_a  /tmp/src_dir/file_b  /tmp/src_dir/file_c  /tmp/dest_dir/


对比理解:

源目录:src_dir/
包含文件: file_a  file_b file_c
目标目录dest_dir/
包含文件: file_d



rsync 中   过去后/tmp/dest_dir/:

 /tmp/src_dir   表示 把该目录 拷贝过去 src_dir  file_d

/tmp/src_dir/ 表示  把该目录下的所有文件完全镜像  拷贝过去 file_a  file_b file_c

/tmp/src_dir/* 表示  把该目录下的所有文件  拷贝过去 file_a  file_b file_c file_d




<think>好的,我现在需要帮助用户查找rsync的使用方法和命令语法。用户已经提供了之前的对话历史和一些引用内容,我需要综合这些信息来给出详细且准确的回答。 首先,回顾用户的问题:“我想查找 rsync 的使用方法 请问rsync 使用教程 或者 rsync 命令语法”。用户明确需要关于rsync的使用教程和命令语法,所以我的回答需要结构清晰,涵盖基本语法、常用命令、场景示例以及进阶技巧。 接下来,查看用户提供的引用内容。引用[3]和[5]解释了rsync的基本功能和特点,比如差异传输、保留文件属性等。引用[1]提到了多线程传输的命令,引用[4]详细说明了rsync的选项和与cp命令的区别。引用[2]涉及rsync守护进程的配置,但用户当前的问题可能更关注基本使用,所以可能需要先介绍基础部分,再提到守护进程配置作为进阶内容。 在之前的回答中,用户已经介绍了rsync的基础同步命令、定时任务和守护进程模式。现在用户需要更深入的使用方法,可能需要包括更多实际例子和参数解释。比如,用户可能想知道各种选项的具体作用,如-a、-v、-z等,以及如何在不同的场景下应用这些选项。 另外,用户提供的引用[4]详细列出了rsync的各个选项,如-r、-l、-v、-z、-a等,这些需要在回答中解释清楚,帮助用户理解每个选项的用途。同时,引用[1]中的--parallel参数可能对提升传输速度有帮助,这也是用户可能关心的优化点。 我需要确保回答的结构合理,可能分为以下几个部分: 1. 基本语法结构 2. 核心参数详解 3. 常用场景示例(本地同步、远程同步、排除文件等) 4. 进阶技巧(守护进程模式、带宽限制、多线程) 5. 注意事项(路径格式、权限问题、日志记录) 要注意使用用户提到的引用内容来支持回答,例如引用[4]中的参数说明,引用[1]中的多线程示例,引用[3]和[5]中的rsync特点。同时,需要将之前回答中的内容(如定时任务和守护进程配置)整合到进阶部分,避免重复但保持连贯。 还要考虑用户可能的潜在需求,比如如何排除特定文件,如何同步符号链接,如何处理权限问题等,这些都可以在示例中体现。另外,提醒用户注意路径后面的斜杠差异,这在rsync中很重要,避免用户出错。 最后,生成的相关问题需要围绕用户可能进一步询问的点,比如排除文件的方法、带宽限制、守护进程配置等,帮助用户深入探索。</think>以下是根据您的需求整理的$rsync$命令使用教程,结合核心功能与实操案例: --- ### 一、rsync 基础语法 **通用格式**: ```bash rsync [选项] 源路径 目标路径 ``` * 本地同步:`rsync -av /source/dir/ /dest/dir/` * 远程同步:`rsync -avz 用户@远程IP:/源路径 /本地路径`(拉取)或反向路径(推送)[^3][^5] --- ### 二、核心参数详解 | 参数 | 功能说明 | 典型场景 | |------|------------------------------------------------------------------------|----------------------------| | `-a` | 归档模式(保留权限、时间戳、属主等信息,等效于`-rlptgoD`)[^4] | 完整目录备份 | | `-v` | 显示同步过程详细信息 | 调试传输问题 | | `-z` | 启用压缩传输 | 低速网络环境优化 | | `-n` | 模拟运行(dry-run),不实际执行文件传输 | 验证同步策略 | | `-P` | 显示进度条并支持断点续传 | 大文件传输监控 | | `--delete` | 删除目标端源目录中不存在的文件 | 严格镜像同步 | | `--exclude` | 排除指定文件/目录(支持通配符) | 过滤临时文件 | | `-e "ssh -p 端口"` | 指定SSH端口 | 非标准SSH端口连接 | --- ### 三、高频使用场景 #### 1. 本地目录同步 ```bash rsync -avh --progress /photos/raw/ /backup/photos/ # 保留属性并显示进度 ``` #### 2. 远程服务器同步(SSH加密) **推送到远程**: ```bash rsync -avz -e "ssh -p 2222" /var/www/ user@192.168.1.100:/web_backup/ ``` **从远程拉取**: ```bash rsync -avz user@192.168.1.100:/var/log/ /local/logs/ ``` #### 3. 排除特定文件 ```bash rsync -av --exclude='*.tmp' --exclude='cache/' /data/ /backup/data/ ``` #### 4. 带宽限制(单位KB/s) ```bash rsync -avz --bwlimit=1000 /large_files/ user@remote:/destination/ # 限速1MB/s ``` --- ### 四、进阶技巧 #### 1. 守护进程模式(需配置`/etc/rsyncd.conf`) **服务端配置模块**: ```ini [custom_module] path = /data/shared comment = 文件共享模块 read only = no auth users = sync_user secrets file = /etc/rsyncd.secrets ``` **客户端同步命令**: ```bash rsync -av 用户@IP::模块名 /本地路径 # 使用模块化路径访问[^2] ``` #### 2. 多线程加速(v3.1.0+) ```bash rsync -av --parallel=4 /source/ user@remote:/dest/ # 启动4个并行传输线程[^1] ``` --- ### 五、注意事项 1. **路径斜杠差异**: - `/source/dir/` 同步目录**内容** - `/source/dir` 同步目录**本身** 2. **权限问题**: 远程同步时确保目标目录有写入权限,建议提前创建目录: ```bash ssh user@remote "mkdir -p /dest/path" ``` 3. **日志记录**: 添加`--log-file=/path/to/rsync.log`参数记录详细操作日志 --- ### 六、与CP命令对比 | 特性 | rsync | cp | |--------------|--------------------------|------------------| | 传输方式 | 差异传输(增量同步)[^4][^5] | 完整拷贝 | | 网络支持 | 支持本地/远程 | 仅本地 | | 属性保留 | 完整保留(-a参数) | 需额外参数 | | 资源消耗 | 低(仅传输变化部分) | 高 | ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值