一、原生替代方案

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

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐