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 命令默认无进度反馈的问题,尤其适合大文件传输或批量复制操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值