一、cp命令简介
Centos7自带的cp、mv命令是不支持 显示进度的,可以使用cp --help
查看
[root@server2 ~]# cp --help
用法:cp [选项]... [-T] 源文件 目标文件
或:cp [选项]... 源文件... 目录
或:cp [选项]... -t 目录 源文件...
Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY.
Mandatory arguments to long options are mandatory for short options too.
-a, --archive 等于-dR --preserve=all
--attributes-only 仅复制属性而不复制数据 --backup[=CONTROL 为每个已存在的目标文件创建备份
-b 类似--backup 但不接受参数
--copy-contents 在递归处理是复制特殊文件内容
-d 等于--no-dereference --preserve=links
-f, --force if an existing destination file cannot be
opened, remove it and try again (this option
is ignored when the -n option is also used)
-i, --interactive prompt before overwrite (overrides a previous -n
option)
-H follow command-line symbolic links in SOURCE
-l, --link hard link files instead of copying
-L, --dereference always follow symbolic links in SOURCE
-n, --no-clobber 不要覆盖已存在的文件(使前面的 -i 选项失效)
-P, --no-dereference 不跟随源文件中的符号链接
-p 等于--preserve=模式,所有权,时间戳
--preserve[=属性列表 保持指定的属性(默认:模式,所有权,时间戳),如果
可能保持附加属性:环境、链接、xattr 等
-c deprecated, same as --preserve=context
--sno-preserve=属性列表 不保留指定的文件属性
--parents 复制前在目标目录创建来源文件路径中的所有目录
-R, -r, --recursive 递归复制目录及其子目录内的所有内容
--reflink[=WHEN] 控制克隆/CoW 副本。请查看下面的内如。
--remove-destination 尝试打开目标文件前先删除已存在的目的地
文件 (相对于 --force 选项)
--sparse=WHEN 控制创建稀疏文件的方式
--strip-trailing-slashes 删除参数中所有源文件/目录末端的斜杠
-s, --symbolic-link 只创建符号链接而不复制文件
-S, --suffix=后缀 自行指定备份文件的后缀
-t, --target-directory=目录 将所有参数指定的源文件/目录
复制至目标目录
-T, --no-target-directory 将目标目录视作普通文件
-u, --update 只在源文件比目标文件新,或目标文件
不存在时才进行复制
-v, --verbose 显示详细的进行步骤
-x, --one-file-system 不跨越文件系统进行操作
-Z set SELinux security context of destination
file to default type
--context[=CTX] like -Z, or if CTX is specified then set the
SELinux or SMACK security context to CTX
--help 显示此帮助信息并退出
--version 显示版本信息并退出
···此处省略内容
因此需要另外安装一个CP来实现进度的显示
二、环境准备
我使用的版本是centos7.4,个人认为centos7和8都可以,6没有试过
2.1 系统环境
查看系统内核
[root@server2 ~]# uname -a
Linux server2 3.10.0-693.el7.x86_64 #1 SMP Tue Aug 22 21:09:27 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
查看系统版本
[root@server2 ~]# cat /etc/redhat-release
CentOS Linux release 7.4.1708 (Core)
[root@server2 ~]#
2.2 文件下载
① coreutils-8.32.tar.gz链接
https://pan.baidu.com/s/1BTmYDOmyB5dGck89tMOIzw
提取码:zxcv
② 插件链接
https://pan.baidu.com/s/1BL5acckVfk9jZJFQwNMBgg
提取码:zxcv
下载后将两个文件上传到/opt目录下面(如何上传可以自行解决)
在centos系统里coreutils-8.32.tar.gz
压缩包所在的目录进行操作
tar -xf coreutils-8.32.tar.gz -C /opt/
如下图所示
PS:这里的文件是已经解压好的
三、安装
3.1 安装依赖环境
[root@server2 ~]# yum -y install gcc
[root@server2 ~]# yum -y install patch
3.2 配置环境变量
[root@server2 ~]# export FORCE_UNSAFE_CONFIGURE=1
3.3 配置安装内容
[root@server2 ~]# cd /opt/coreutils-8.32/
[root@server2 ~]# patch -p1 -i /opt/advcpmv-0.8-8.32.patch
[root@server2 ~]# ./configure && make
3.4 复制命令
为了不与cp命令冲突,这里将新安装的cp命令重名为cpg
(cpg没有什么特殊意义,就是自己起的名字,也可以重名为其它名字)
[root@server2 ~]# cp /opt/coreutils-8.32/src/cp /usr/local/bin/cpg
[root@server2 ~]# cp /opt/coreutils-8.32/src/mv /usr/local/bin/mvg
解释
/usr/bin为内部命令
/usr/local/bin为外部命令
四、测试
4.1 cpg测试
常用选项
-g 显示进度
-r 归档