Linux下的文件传输优化
1.创建实验环境
首先建立两台虚拟机主机并且保证两台主机可以相互通信
两台虚拟机:
RHEL7_node1 IP:192.168.1.6
RHEL8_node1 IP:192.168.1.5
如下显示:两台虚拟机应急完成通信,在rhel7_node1中连接rhel8_node1在这里插入图片描述
2.两种文件传输方式:scp和rsync
2.1 scp 命令的使用格式
scp 本地文件 远程主机用户名@远程主机IP:远程主机目录
scp 远程主机用户名@远程主机IP:远程主机目录 本地文件
scp命令使用 实验步骤如下:
首先在rhel7_node1创建文件westos及目录Linux
在这里插入图片描述
命令使用如下:

[root@rhel7_node1 mnt]# scp westos root@192.168.1.5:/mnt/    添加-q参数可以不显示文件传输进度
root@192.168.1.5's password: 
westos                                        100%    0     0.0KB/s   00:00    
[root@rhel7_node1 mnt]# scp -r linux root@192.168.1.5:/mnt/    目录上传必须使用-r  参数
root@192.168.1.5's password: 

在这里插入图片描述把远程文件传输到本地主机如下:

[root@rhel7_node1 mnt]# scp root@192.168.1.5:/mnt/westos /mnt/
root@192.168.1.5's password: 
westos                                        100%    0     0.0KB/s   00:00    
[root@rhel7_node1 mnt]# ls 
westos
[root@rhel7_node1 mnt]# 

在这里插入图片描述

2.2scp 和rsync命令的对比

创建实验素材:
dd-截取 if-inputfile of-outputfile bs-blocksize count-块个数


[root@rhel7_node1 mnt]# dd if=/dev/zero of=/mnt/file1 bs=1M count=10
10+0 records in
10+0 records out
10485760 bytes (10 MB) copied, 0.0703817 s, 149 MB/s
[root@rhel7_node1 mnt]# dd if=/dev/zero of=/mnt/file2 bs=1M count=20
20+0 records in
20+0 records out
20971520 bytes (21 MB) copied, 0.312774 s, 67.0 MB/s
[root@rhel7_node1 mnt]# dd if=/dev/zero of=/mnt/file3 bs=1M count=30
30+0 records in
30+0 records out
31457280 bytes (31 MB) copied, 2.18026 s, 14.4 MB/s
[root@rhel7_node1 mnt]# ls
file1  file2  file3

在这里插入图片描述
远程传输过程中登录密码的时间也是会计算在传输时间内,所以建立免密登录
建立秘钥:ssh-keygen
上传公钥:ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.1.5
在这里插入图片描述
创建测试脚本check_scp.sh和check._rsync.sh两个脚本

[root@rhel7_node1 mnt]# time scp -qr /mnt/ root@192.168.1.5:/mnt  上传文件已经不再需要输入密码

real	0m1.637s
user	0m0.201s
sys	0m0.668s
[root@rhel7_node1 mnt]# time scp -qr /mnt/ root@192.168.1.5:/mnt

real	0m1.343s
user	0m0.240s
sys	0m0.555s

在这里插入图片描述
运行两个脚本:可以明显看出scp在复制传输文件过程中对已有的文件直接覆盖,三次传输时间基本一致,而rsync在文件传输过程中对已存在的文件不会覆盖,所以三次时间递归减少。

[root@rhel7_node1 mnt]# sh check_scp.sh   检测scp文件传输时间

real	0m1.253s    
user	0m0.207s    
sys	    0m0.496s    第一次系统执行时间

real	0m1.130s
user	0m0.239s
sys	    0m0.364s    第二次系统执行时间

real	0m1.134s
user	0m0.234s
sys 	0m0.369s    第三次系统执行时间
[root@rhel7_node1 mnt]# sh check._rsync.sh  检测rsync文件传输时间

real	0m1.493s
user	0m0.335s
sys  	0m0.430s    第一次系统执行时间

real	0m0.305s
user	0m0.008s
sys     0m0.010s    第二次系统执行时间

real	0m0.280s
user	0m0.010s
sys	    0m0.010s   第三次系统执行时间

在这里插入图片描述
3.rsync的用法
格式:rsync 文件 远程用户主机@远程用户主机IP :远程主机目录
rsync 远程用户主机@远程用户主机IP:远程主机目录 文件路径
参数 r 复制目录
t 同步时间
p 同步权限
o 同步所有人
g 同步所有组
l 同步链接文件
D 同步块设备文件

创建实验素材测试参数:
在rhel8_node1中监测/mnt/目录
在这里插入图片描述
在rhel7_node1中创建file{1…4}
在这里插入图片描述
把rhel7_node1 /mnt/中的文件上传到rhel8_node1、/mnt/中

[root@rhel7_node1 mnt]# rsync -r /mnt/ root@192.168.1.5:/mnt/
skipping non-regular file "file"   链接文件未上传

在这里插入图片描述

[root@rhel7_node1 mnt]# rsync -lr /mnt/ root@192.168.1.5:/mnt/   参l表示上传链接文件
[root@rhel7_node1 mnt]# 

在这里插入图片描述

[root@rhel7_node1 mnt]# rsync -lrogtp /mnt/ root@192.168.1.5:/mnt/  表示权限和所有人所有组及时间都同步上传

在这里插入图片描述
上传块设备文件:

[root@rhel7_node1 mnt]# rsync -Dr /dev/pts root@192.168.1.5:/mnt/

在这里插入图片描述
4.文件的归档压缩
4.1文件的归档
使用命令:tar
使用参数:c 创建
f 指定文件名
t 查看归档文件
x 解开归档文件
r 添加指定文件到归档文件中
–get 指定解开归档文件
–delete 删除指定归档文件
-C 解开到指定目录中
测试参数:

 [root@rhel7_node1 Desktop]# tar cf etc.tar /etc/  创建归档文件
tar: Removing leading `/' from member names  
[root@rhel7_node1 Desktop]# tar tf etc.tar   查看归档文件

在这里插入图片描述
添加westos文件到etc.tar中

[root@rhel7_node1 Desktop]# tar rf etc.tar westos

在这里插入图片描述
解开归档文件

[root@rhel7_node1 Desktop]# tar xf etc.tar 

在这里插入图片描述
解档指定文件并删除指定文件

[root@rhel7_node1 Desktop]# tar f etc.tar --get westos
[root@rhel7_node1 Desktop]# tar f etc.tar --delete westos

在这里插入图片描述
在这里插入图片描述
解开到指定目录当中:

[root@rhel7_node1 Desktop]# tar xf etc.tar -C /mnt/
[root@rhel7_node1 Desktop]# cd /mnt
[root@rhel7_node1 mnt]# ls -a
.  ..  etc  file  file1  file2  file3  file4

在这里插入图片描述
文件的压缩
格式:gzip 、xz、bzip2、zip;四种格式
操作如下所示:
gzip格式:

[root@rhel7_node1 Desktop]# gzip etc.tar  gz格式文档压缩
[root@rhel7_node1 Desktop]# du -sh etc.tar.gz   查看压缩后大小
12M	etc.tar.gz

[root@rhel7_node1 Desktop]# gunzip etc.tar.gz   gz格式文档解开压缩 

在这里插入图片描述

xz格式:

[root@rhel7_node1 Desktop]# xz etc.tar    xz格式压缩文档
[root@rhel7_node1 Desktop]# du -sh etc.tar.xz 
8.0M	etc.tar.xz

[root@rhel7_node1 Desktop]# unxz etc.tar.xz   xz格式解开压缩文档

在这里插入图片描述

zip格式:

[root@rhel7_node1 Desktop]# zip -r etc.tar.zip etc.tar   zip文档压缩
  adding: etc.tar (deflated 70%)
[root@rhel7_node1 Desktop]# du -sh etc.tar  查看归档文件大小
39M	etc.tar
[root@rhel7_node1 Desktop]# du -sh etc.tar.zip  查看压缩包大小
16M	etc.tar.zip
[root@rhel7_node1 Desktop]# unzip etc.tar.zip  解开压缩包 
Archive:  etc.tar.zip
replace etc.tar? [y]es, [n]o, [A]ll, [N]one, [r]ename: yes   桌面已有压缩包询问是否覆盖
  inflating: etc.tar                 

在这里插入图片描述
bzip2格式:

[root@rhel7_node1 Desktop]# bzip2 etc.tar  压缩文档
[root@rhel7_node1 Desktop]# du -sh etc.tar.bz2   查看压缩后大小
10M	etc.tar.bz2
[root@rhel7_node1 Desktop]# bunzip2 etc.tar.bz2   解开压缩文档

在这里插入图片描述
4.2tar+压缩
有三种格式 gz 、 xz、 bzip2
三种格式对应的参数为:gzip=z、xz=J、bzip2=j

[root@rhel7_node1 Desktop]# tar zcf etc.tar.gz /etc/
tar: Removing leading `/' from member names
[root@rhel7_node1 Desktop]# tar jcf etc.tar.bz2 /etc/
tar: Removing leading `/' from member names
[root@rhel7_node1 Desktop]# tar Jcf etc.tar.xz /etc/
tar: Removing leading `/' from member names

在这里插入图片描述
解开压缩文档:

[root@rhel7_node1 Desktop]# tar zxf etc.tar.gz  解开gzip格式压缩文档

在这里插入图片描述

[root@rhel7_node1 Desktop]# tar jxf etc.tar.bz2   解开bzip2格式压缩文档

在这里插入图片描述

[root@rhel7_node1 Desktop]# tar Jxf etc.tar.xz  解开xz格式压缩文档

在这里插入图片描述

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐