老K博客 - 一个源码和技术分享的博客

Linux下复制文件时显示复制进度

老K博客
2023-08-06 / 1 评论 / 42 阅读 / 正在检测是否收录...
广告

默认的和都不显示进度,对于复制大文件来说,非常不友好~cpmv

所以推荐这个包,你可以自定义替换的命令,比如官方的和。advcpmvcpgmvg

安装方式非常简单:

curl https://raw.githubusercontent.com/jarun/advcpmv/master/install.sh --create-dirs -o ./advcpmv/install.sh && (cd advcpmv && sh install.sh)

安装之后会在本地目录生成编译好的程序,把它们放到系统目录即可:

sudo mv ./advcpmv/advcp /usr/local/bin/cpg
sudo mv ./advcpmv/advmv /usr/local/bin/mvg

然后就可以使用了:

# 原来的命令
cp -r aaa/ bbb/
 
# 替换命令
cpg -gr aaa/ bbb/

复制过程:

(base) mcj@mcj2080:~/16T/2080Ti_Backup$ sudo cpg -gr ../../bigdisk/ ./

2 of 5730929 files copied (about 17h 39m 51s remaining) g)   )                                                                                                                            1.0 GiB /   1.7 TiB
[>                                                                                                                                                                                                   ]  0.1 %
copying at  32.4 MiB/s (about  0h  1m 18s remaining)
../../bigdisk/cuda9_sogoupinyin_20b94ebc2ef0036277f4a2423848228c0eb97164e946fa3c36792a1b5dec1b59                                                                                          1.0 GiB /   8.4 GiB
[=======================> 

移动命令同理,下面是所有的使用说明:

(base) mcj@mcj2080:~$ cpg --help
用法:cpg [选项]... [-T] 源文件 目标文件
 或:cpg [选项]... 源文件... 目录
 或:cpg [选项]... -t 目录 源文件...
Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY.

必选参数对长短选项同时适用。
  -a, --archive            等于-dR --preserve=all
      --attributes-only    仅复制属性而不复制数据      --backup[=CONTROL        为每个已存在的目标文件创建备份
  -b                类似--backup 但不接受参数
      --copy-contents        在递归处理是复制特殊文件内容
  -d                等于--no-dereference --preserve=links
      --debug                  explain how a file is copied.  Implies -v
  -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)
  -g, --progress-bar           add a progress bar.
                                 Note that this doesn't work with reflink,
                                 reflink will be automatically disabled
  -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                           same as --preserve=mode,ownership,timestamps
      --preserve[=ATTR_LIST]   preserve the specified attributes
      --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        display this help and exit
      --version     output version information and exit

ATTR_LIST is a comma-separated list of attributes. Attributes are 'mode' for
permissions (including any ACL and xattr permissions), 'ownership' for user
and group, 'timestamps' for file timestamps, 'links' for hard links, 'context'
for security context, 'xattr' for extended attributes, and 'all' for all
attributes.

By default, sparse SOURCE files are detected by a crude heuristic and the
corresponding DEST file is made sparse as well.  That is the behavior
selected by --sparse=auto.  Specify --sparse=always to create a sparse DEST
file whenever the SOURCE file contains a long enough sequence of zero bytes.
Use --sparse=never to inhibit creation of sparse files.

When --reflink[=always] is specified, perform a lightweight copy, where the
data blocks are copied only when modified.  If this is not possible the copy
fails, or if --reflink=auto is specified, fall back to a standard copy.
Use --reflink=never to ensure a standard copy is performed.

The backup suffix is '~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.
The version control method may be selected via the --backup option or through
the VERSION_CONTROL environment variable.  Here are the values:

  none, off       不进行备份(即使使用了--backup 选项)
  numbered, t     备份文件加上数字进行排序
  existing, nil   若有数字的备份文件已经存在则使用数字,否则使用普通方式备份
  simple, never   永远使用普通方式备份

有一个特别情况:如果同时指定--force 和--backup 选项,而源文件和目标文件
是同一个已存在的一般文件的话,cp 会将源文件备份。

GNU coreutils online help: <https://www.gnu.org/software/coreutils/>
Report any translation bugs to <https://translationproject.org/team/>
Full documentation <https://www.gnu.org/software/coreutils/cp>
or available locally via: info '(coreutils) cp invocation'
本文共 577 个字数,平均阅读时长 ≈ 2分钟
广告
0

海报

正在生成.....

评论 (1)

语录
取消
  1. 头像
    123123
    揭阳 ·Windows 10 · Google Chrome
    沙发

    人总有一天都会死的,但正因为生命是有限的,才能够欢喜和悲伤。66666666

    回复 删除 垃圾
CC BY-NC-ND