linux cp 命令后同步,使用rsync命令取代cp拷贝,可显示进度

rsync是一个强大的远程数据同步工具,常用于Linux环境中的文件拷贝,尤其在需要显示拷贝进度时。与cp命令不同,rsync在拷贝大文件时会显示进度条,提高用户交互体验。例如,`rsync -avPh www2 www3`即可在拷贝过程中展示详细进度。此外,rsync还支持多种模式,包括本地文件拷贝、远程服务器间的数据同步等,通过不同的参数组合实现各种功能。了解rsync的用法和选项,如-v(详细模式)、-q(安静模式)、-r(递归复制)等,能帮助用户更有效地管理和同步文件。

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

使用cp命令拷贝文档固然不错,但拷贝时间需要很长时间时,便不知进度如何。

如想展示进度,便可以使用另一个命令rsync,顾名思义,此命令是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件。

当然我们也可以用它来“拷贝”本地文件。

如:使用cp命令进行拷贝,属于静默展示,没有状况便不会提示:

使用rsync则可以让其展示进度:

[[email protected] data]# rsync -avPh www2 www3

sending incremental file list

created directory www3

www2/

www2/show.zip

29.32M 100% 128.72MB/s 0:00:00 (xfer#1, to-check=0/2)

sent 29.33M bytes received 35 bytes 58.65M bytes/sec

total size is 29.32M speedup is 1.00

[[email protected] data]# ls

www www2 www3

[[email protected] data]# ls www3

www2

[[email protected] data]#

rsync命令用法及常用选项介绍:

用法:

拷贝本地文件

rsync [OPTION]... SRC [SRC]... DEST

将本地机器的内容拷贝到远程机器,当DST路径地址包含单个冒号”:”分隔符时启动该模式

rsync [OPTION]... SRC [SRC]... [[email protected]]HOST:DEST

从本地机器拷贝文件到远程rsync服务器中。当DST路径信息包含”::”分隔符时启动该模式。

rsync [OPTION]... SRC [SRC]... [[email protected]]HOST::DEST

将远程机器的内容拷贝到本地机器,当SRC地址路径包含单个冒号”:”分隔符时启动该模式。

rsync [OPTION]... [[email protected]]HOST:SRC [DEST]

从远程rsync服务器中拷贝文件到本地机。当SRC路径信息包含”::”分隔符时启动该模式。

rsync [OPTION]... [[email protected]]HOST::SRC [DEST]

列远程机的文件列表。这类似于rsync传输,不过只要在命令中省略掉本地机信息即可。

rsync [OPTION]... rsync://[[email protected]]HOST[:PORT]/SRC [DEST]

常用选项:

-v: 详细模式输出

-q: 精简输出模式,仅显示错误信息

-r: 对目录进行递归复制

-u: update,仅更新

-l: 复制链接文件属性

-p: 保留文件权限属性

-g: 保留文件所有组

-o: 保留文件所有者

-D: 保留文件设备(Device)属性

-t: 保留文件的时间属性

-I: -ignore-times 不跳过那些有同样的时间和长度的文件

-z: 文件在传输时进行压缩处理

-a: 递归传输,并保持所有文件属性,等于-rlptgoD,最常用

### Linux 中 `cp` 命令的高级用法和技巧 #### 1. 复制并保持属性不变 (`--preserve`) 当需要复制文件或目录的同时保留其原始权限、时间戳和其他元数据时,可以使用 `--preserve` 参数。此参数支持多种属性的选择性保留。 ```bash cp --preserve=mode,ownership,timestamps source_file destination_file ``` 该方法适用于备份场景或其他需要严格维护源文件特性的场合[^1]。 --- #### 2. 符号链接处理 (`-d`, `-l`, 或 `-s`) 对于涉及符号链接的操作,可以通过以下选项实现不同行为: - **`-d`**: 如果目标是符号链接,则不展开它们;而是直接复制这些链接本身。 - **`-l`**: 创建硬链接而非实际拷贝内容到新位置。 - **`-s`**: 制作软(符号)链接代替真实的数据迁移过程。 例如,在创建指向原文件的新符号链接时可执行如下命令: ```bash cp -s /path/to/source_file /path/to/destination_link ``` 这有助于节省磁盘空间以及简化管理复杂依赖关系的任务[^2]。 --- #### 3. 跨设备安全复制 (`-a`) 为了完成精确无误的整体迁移工作(比如从旧硬盘迁移到SSD),推荐采用存档模式(`-a`)来确保整个结构连同所有细节都被完好转移过去。这个标志实际上综合了多个其他有用的标记功能于一体,包括但不限于递归读取子层(-r),维持原有所有权设置(--preserve=all)等等。 ```bash cp -a old_directory new_directory ``` 通过这种方式能够有效防止因环境差异而导致意外更改发生的情况出现。 --- #### 4. 进度显示与性能优化 (结合 `rsync` 工具) 虽然标准版 `cp` 并未内置进度条特性,但借助外部程序如 `rsync` 可轻松达成这一目的。下面展示了一个利用后者监控大型传输进程的例子: ```bash rsync --progress --archive source_dir target_dir ``` 这里不仅可以看到实时更新的信息,而且由于采用了增量算法原理的缘故,在重复同步相同资料集的时候往往能获得更快的速度表现。 --- #### 5. 条件性覆盖控制 (`-n`, `-u`) 为了避免不必要的冲突或者丢失最新版本的内容,可以根据具体情况选用不同的策略来进行条件判断式的写入动作: - **`-n`**(no-clobber): 不会替换已经存在的任何东西; - **`-u`**(update): 仅当源对象较目的地更年轻才实施真正的移动操作。 实例演示如何只更新那些真正发生变化的部分: ```bash cp -ru src_folder dst_folder ``` 这样既提高了效率又减少了潜在风险因素的存在可能性。 --- #### 6. 自定义缓冲区大小调整 (`--block-size`) 针对某些特殊需求下的极端情况考虑到了灵活性方面的要求,允许手动指定内部使用的块尺寸单位长度,默认情况下是以字节(Byte)计数为基础计算出来的数值。如果希望改变默认设定的话则需按照特定格式提供相应的参数值进去即可生效。 ```bash cp --block-size=M source_file dest_file ``` 其中 M 表示兆位(Megabyte)。 --- ### 总结 上述列举了几种较为常用的增强型配置方案供参考学习之用,当然还有更多其它方面的扩展可能等待探索发现。熟练掌握之后便可以在日常运维工作中更加得心应手地运用起来解决问题啦!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值