在 Linux 服务器上进行文件备份或迁移时,最令人焦虑的莫过于面对一个长时间运行的 cp 或 mv 命令,却无法得知任务进度。尤其在处理数十 GB 的大文件时,光标静止不动,无法预估剩余时间,体验非常不友好。为此,社区开发者提供了一个名为 advcpmv 的增强补丁,安装后即可为复制和移动命令添加直观的进度显示。

什么是 advcpmv
advcpmv 的核心原理是为 GNU Coreutils 中的 cp 和 mv 命令源码打上补丁并重新编译。安装完成后,系统会新增 cpg 和 mvg 两个命令,通过 -g 参数即可在终端中启用图形化进度条,极大提升了 Linux 下文件操作的透明度和可控性。
功能与使用示例

1. 复制单个大文件
cpg -g movie.mkv /backup/
命令执行后,终端会动态显示如下信息:
[======> ] 45% (4.5G/10G) 60MB/s 还剩1分钟
你可以清晰看到完成百分比、已传输数据量、实时速度以及预估剩余时间。
2. 递归复制整个目录
cpg -gR documents/ backup_docs/
与原生命令不同,cpg 在复制目录时会显示整体进度,而非最后一个文件的进度:
正在复制... [========> ] 70% 已处理:3200/5000个文件
3. 移动文件
mvg -g database.db /new_location/
移动文件时同样支持进度显示,效果与复制命令一致。
4. 配置别名(推荐)
为了不改变原有操作习惯,可以在 ~/.bashrc 或 ~/.bash_aliases 文件中设置别名:
alias cp='cpg -g'
alias mv='mvg -g'
配置后,直接使用 cp 或 mv 命令即可享受进度条功能,让 命令行 操作更加高效直观。
安装与配置步骤
方法一:使用一键安装脚本
执行以下命令即可完成下载、编译和安装。建议在运行前先检查脚本内容。
curl -sL https://git.io/advcpmv-installer | bash
方法二:手动编译安装
如果脚本安装失败,或希望更可控,可以手动操作:
# 1. 下载源码
wget https://github.com/jarun/advcpmv/archive/refs/tags/v0.9.tar.gz
tar -xzf v0.9.tar.gz
cd advcpmv-0.9/
# 2. 编译并替换命令
sudo cp src/cp /usr/local/bin/cpg
sudo cp src/mv /usr/local/bin/mvg
配置别名并测试
-
编辑 shell 配置文件(如 ~/.bashrc):
nano ~/.bashrc
在文件末尾添加:
alias cp='/usr/local/bin/cpg -g'
alias mv='/usr/local/bin/mvg -g'
保存退出后,执行 source ~/.bashrc 使配置生效。
-
创建一个测试文件并验证:
# 生成一个500MB的测试文件
dd if=/dev/zero of=testfile bs=1M count=500
# 使用带进度条的命令复制
cpg -g testfile testfile.copy
如果一切正常,终端中将出现动态更新的进度条。
|