Centos Linux快速复制文件并查看进度的方法(保留文件原始时间戳等属性)

用cp命令保证快速复制,screen保证不丢失你对cp命令执行情况的掌控。

需要用到screen软件包,防止复制过程中终端被关闭。

centos linux直到7默认都没有screen,需要安装一下

普通账户:

bash 复制代码
sudo yum -y install screen

root账户:

bash 复制代码
yum -y install screen

安装好之后

bash 复制代码
screen -S copy

一个叫copy的屏幕,然后输入命令:

bash 复制代码
cp -frpv source destination

source:源文件或者目录

destination:目标路径

参数:f:强制复制;p:保留所有信息(创建时间、修改时间、权限、所有者等);r:递归目录复制;v:显示详细信息(复制完成的文件路径会打到屏幕上,这个参数能让你在拷贝上百G的大文件)

回车后,按Ctrl+A,然后按D,终端会显示[detached from 41800.copy],表明窗口已经在后台执行了。然后,你可以再弄一个

bash 复制代码
screen -S progress

以方便在两个窗口之间切换。

然后执行

bash 复制代码
du -sh destination

destination表示目标文件夹,你看这个大小,对比你原来要复制的文件夹的大小,你就知道进度了。

如果需要回到复制界面,同样,Ctrl+A,然后按D,然后screen -r copy,就回到原来的窗口了。

如果像知道有多少窗口,screen -ls可以查看。

bash 复制代码
41800.copy      (Detached)

当然,你也可以单独用一个新的终端窗口来看目标文件夹现在有多大了:

bash 复制代码
du -sh destination
#会显示
6.1G    test/
#而且只会显示根目录的总大小

表示41800.copy正在后台运行,41800表示进程号,由系统分配,copy是你刚给复制窗口起的名字,如果彻底复制完了,这个窗口不会自动关掉,你需要

bash 复制代码
kill -9 41800

然后可能会提示你:

bash 复制代码
you die...

再执行

bash 复制代码
screen -ls

能看到

bash 复制代码
41800.copy      (Dead ???)

执行

bash 复制代码
screen -wipe

看到

bash 复制代码
There is a screen on:
        41800.copy      (Removed)
1 socket wiped out.
No Sockets found in /var/run/screen/S-yourlogonusername.

表示结束的进程就清理掉了。

总结:如果只是本地拷贝文件,没有很高级的备份需求,又很在意进度,又是本地复制,不建议用rsync和scp,scp速度比rsync可能会快一点,但都没有直接cp效率高且复制速度快。如果确实需要知道当前进度和总进度,就用du -sh来看目标文件夹大小,对比你原来文件夹的大小,你总应该会心里有数的。

相关推荐
进阶的猪8 分钟前
使用printk对SPI子系统全过程的追踪
linux·服务器
2301_8035545217 分钟前
Linux里面的文件描述符和windows里面的句柄
linux·运维·服务器
IT摆渡者18 分钟前
linux 系统安全检查
运维·网络·经验分享·笔记
星马梦缘29 分钟前
如何切换window-ubuntu双系统【方案一】
linux·ubuntu·双系统
云动课堂30 分钟前
【运维实战】Nginx 高性能Web服务 · 一键自动化部署方案 (适配银河麒麟 V10 / openEuler / CentOS 7/8)
运维·前端·nginx
idolao34 分钟前
CentOS 7 安装 jakarta-tomcat-connectors-jk2-src-current.tar.gz 详细步骤(解压、编译、配置)
linux·centos·tomcat
时空自由民.1 小时前
蓝牙协议栈介绍
linux·网络·单片机
KnowSafe2 小时前
证书自动化解决方案哪家更可靠?
运维·服务器·安全·https·自动化·ssl
hsjcjh2 小时前
2026实测:Gemini 3.1镜像站函数调用如何实现自动化运维工单?国内免费镜像教程
运维·自动化
日取其半万世不竭2 小时前
用云服务器搭建 Nextcloud,告别网盘限速和隐私泄露
运维·服务器