rsync 可有效解决 cp 命令默认无进度反馈的问题


一、原生替代方案

1. rsync 命令(推荐)
  • 功能特性:支持实时进度条、传输速率、剩余时间预估,且保留文件属性(权限/时间戳)。
  • 命令示例
    rsync -ah --progress source_file destination/
    
    • -a:归档模式(保留元数据)
    • -h:人类可读单位(如 MB/s)
    • --progress:显示进度信息
  • 输出示例
    source_file 100%  500MB  50.3MB/s   00:00:10
    
2. dd 命令 + status=progress
  • 适用场景:块级复制大文件时显示进度。
  • 命令示例
    dd if=source.img of=/dev/sdX bs=4M status=progress
    
  • 特点:仅显示当前块传输进度,适合低级别操作。

二、进度监控工具

1. pv 管道查看器
  • 安装方法
    sudo apt install pv  # Debian/Ubuntu
    sudo yum install pv  # CentOS/RHEL
    
  • 使用方式
    pv source_file > destination_file
    
    • 高级用法(结合 cp):
      cp -r dir | pv -lep -s $(du -sb dir | awk '{print $1}') > /dev/null
      
      • -l:按行计数
      • -e:估算剩余时间
      • -p:显示进度条
      • -s:指定总大小
2. progress 工具
  • 功能:实时监控正在运行的 cp 进程。
  • 操作步骤
    sudo apt install progress  # 安装工具
    progress -M              # 监控所有复制进程
    
  • 输出示例
    [12345] cp /source /dest
      75% (3.2GiB/4.2GiB)  120MB/s  00:00:27 ETA
    

三、其他实用方法

1. 图形化界面
  • GNOME/Nautilus:直接拖拽文件时显示进度弹窗。
  • KDE Dolphin:内置传输进度条。
2. 脚本化方案
  • 使用 watch 命令
    watch -n 1 'du -sh destination_dir'
    
    • 每秒刷新目标目录大小,估算进度。
3. 自定义别名
  • .bashrc 中添加
    alias cpr='rsync -ah --progress'
    
    • 之后使用 cpr 命令即可显示进度。

四、方法对比

方案进度精度安装需求适用场景输出实时性
rsync文件同步/备份
pv管道流式传输
progress监控已有 cp 进程
dd块设备复制

五、操作建议

  1. 优先选择 rsync:功能最全面,无需额外安装。
  2. 管道场景用 pv:适合脚本或自动化流程。
  3. 实时监控选 progress:无需修改原命令,直接查看后台进程。

通过上述方法,可有效解决 cp 命令默认无进度反馈的问题,尤其适合大文件传输或批量复制操作。

### 如何在Linux中查看`cp`命令的复制进度 默认情况下,`cp`命令不会显示任何进度信息。为了能够监控文件复制过程中的进度,在Linux中有几种方法可以实现这一功能。 #### 使用 `rsync` 命令替代 `cp` 对于需要监视大文件或目录结构的拷贝操作来说,推荐使用`rsync`工具来代替传统的`cp`命令。该工具不仅支持增量传输而且提供了详细的统计信息以及实时更新的百分比完成度指示器[^1]。 ```bash rsync -ah --progress source destination ``` 此命令行选项解释如下: - `-a`: 归档模式;表示递归传输并保持符号链接、权限、时间戳等属性不变。 - `-h`: 输出人类可读格式的数据大小单位(如K,M,G)。 - `--progress`: 显示传输过程中文件列表及其各自进展状况。 #### 利用 `pv` (Pipe Viewer) 工具增强 `cp` 如果偏好继续沿用`cp`指令,则可以通过管道配合第三方软件`pv`一起工作以获得相似效果。首先需确认系统已安装好这个额外组件,之后按照下面方式构建命令链路即可达到目的。 ```bash pv source > destination ``` 或者更复杂一点的例子,当涉及到多个源文件向单一目标位置转移时: ```bash tar cf - directory | pv | tar xf - -C /destination/path/ ``` 这里利用了`tar`打包解包特性加上`pv`流处理能力共同作用于整个压缩/解压流程之中,从而实现了可视化的进度反馈机制。 #### 自定义脚本方案 除了上述两种较为简便的方法之外,还可以编写简单的Shell脚本来定期检查待迁移对象的状态变化情况,并据此计算出大致比例关系进而打印至终端屏幕上供用户参考。不过这种方式相对繁琐一些,通常只适用于特定场景下的定制化需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值