文章目录
实验环境:
rhel7IP:192.168.0.40
rhel8IP:192.168.0.41
scp命令
scp命令用于在Linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器,且scp传输是加密的。另外,scp非常不占资源,不会提高多少系统负荷,使用时基本不影响系统正常使用。
语法:
- a.把本地文件复制到远程主机
scp 本地文件 远程主机用户@远程主机IP:远程主机目录 - b.把远程主机的文件复制到本地
scp 远程主机用户@远程主机IP:远程主机目录 本地文件
在rhel7建立实验素材并实验:把本地文件复制到远程主机
1.在rhel7中建立westos文件,写入内容
使用scp将westos文件复制到rhel8远程主机的/mnt/目录下
回到rhel8的/mnt目录下查看效果:
可见,westos文件从rhel7中成功传输过来。并且内容不变。
刚才的实验scp westos root@192.168.0.41:/mnt/
中,scp后没有跟任何参数。
scp -q 为静默输出(不显示进度)
当传输目录时,不加参数不能正常传输:
使用scp -r进行目录的传输:
在rhel8的/mnt中建立实验素材rhel8file,内容如下
使用scp命令在rhel7中将rhel8file传输到本地:
rsync命令
rsync命令是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件。rsync只传送两个文件不同的部分,而不是每次都整份传送,因此速度相当快。但是当小文件众多的情况下,rsync会导致硬盘I/O非常高。
rsync命令和scp命令的对比:
- 实验素材的建立
dd if=/dev/zero of=/mnt/file1 bs=1M count=10 ##dd=截取,if=inputfile of=outputfile bs=blocksize count=块的个数
dd if=/dev/zero of=/mnt/file2 bs=1M count=20
dd if=/dev/zero of=/mnt/file3 bs=1M count=30
使用time命令查看运行时间,并使用time scp -qr /mnt root@192.168.0.41:/mnt查看将rhel下/mnt的文件传输到rhel8下的/mnt的时间
创建脚本自动运行3次:
同样方法,写一个rsync的脚本运行3次查看运行时间,因为之前设定过密钥对,两台主机之间通过密钥认证,所以无时间误差。在运行之前记得将刚才复制过的文件删除!
可以看到,scp的3次运行时间几乎相同。而rsync的3次运行时间,的第一次运行时间稍微长,第二次和第三次时间远远小于第一次系统运行时间,这是因为滴一滴在同步的过程中,远程主机没有对应文件,同步会复制本地文件到远程主机,第二次第三次因为目标文件已经存在,无需任何操作,所以时间远远小于第一次系统运行时间。
三次运行时间中:
real时间是指挂钟时间,也就是命令开始执行到结束的时间。这个短时间包括其他进程所占用的时间片,和进程被阻塞时所花费的时间。
user时间是指进程在用户模式中的CPU执行时间,其他进程花费的时间和阻塞状态的时间没有计算在内。
sys时间是进程在内核模式中的CPU执行时间,代表进程使用系统调用所花费的CPU执行时间,这也是由进程执行而消耗的CPU执行时间。
rsync的用法
- 将远程主机文件同步到本地
rsync 远程用户@远程主机IP:远程主机目录 本地文件路径 - 将本地文件同步到远程主机
rsync 文件 远程用户@远程主机IP: 远程主机目录
rsync的常用参数
参数 | 作用 |
---|---|
-r | 复制目录 |
-l | 复制链接 |
-p | 复制权限 |
-t | 复制时间戳 |
-o | 复制拥有者 |
-g | 复制拥有组 |
-D | 复制设备文件 |
实验环境:在rhel7的/mnt下新建五个文件test{1…5}并将文件的所有人所有组改为kiosk,并设置满权限。
在rhel7中新打开一个shall,用watch -n 1建立监控查看远程主机rhel8 /mnt下文件的属性( ls -l),用ln -s为test2文件创建链接。
使用rsync -r /mnt root@192.168.0.41:/mnt
将目录复制到远程主机,同步目录中的文件。
使用rsync -r /mnt/ root@192.168.0.41:/mnt
##只同步目录中的文件
rsync -rl /mnt/ root@192.168.0.41:/mnt ##同步目录中的链接
rsync -rlp /mnt/ root@192.168.0.41:/mnt ##同步目录中的权限
rsync -rlpt /mnt/ root@192.168.0.41:/mnt ##同步时间戳
rsync -rD /dev/pts root@192.168.0.41:/mnt ##同步设备文件
文件的归档压缩
当我们复制的文件太多时,比如将/etc下的文件复制到远程主机的/mnt目录下时,因为文件太多而导致文件复制的过程非常缓慢
如果我们能将目录中的文件变成一个文件效率就会变得比较高,这种方式叫做打包。
tar命令 (打包命令)
常用参数:
参数 | 作用 |
---|---|
c | 新建打包文件 |
f | 指定文件名称 |
x | 解档 |
t | 查看文件名 |
r | 向归档文件中添加文件 |
- -get | 解档指定文件 |
- -delete | 删除指定文件 |
-C | 指定解档路径 |
使用 tar cf etc.tat /etc将/etc进行打包到桌面上,原始大小为44m::
打包归档后大小为39m
前后大小不一样,但是大小实质性是没有改变的.因为/etc当中有许多文件为链接,而链接在du -sh里会被统计两次,而打包后的链接不会被统计。
我们可以通过双击打开进行查看里面的文件,也可以用命令去操作。
tar tf etc.tar
使用命令tar -rf etc.tar rhel8file
将桌面上的rhel8file添加到etc.tar中:
使用tar f etc.tar --get rhel8file
将指定的rhel8file取出
使用tar f etc.tar --delete rhel8file
将指定的rhel8file删除
使用tarx f etc.tar
在当前位置解档
使用tar f etc.tar -C /mnt
指定解档路径为/mnt
文件的压缩
Linux中默认集成好的压缩格式有zip,gzip,bzip2,xz。
zip格式的压缩与解压缩
zip -r etc.tar.zip etc.tar
进行压缩:
可见,压缩后的大小为16m。
unzip etc.tar.zip
进行解压缩(在解压缩之前将原有的打包文件删除)
gzip格式的压缩与解压缩
gzip etc.tar ##进行gzip格式的压缩
可见,使用gzip格式压缩后的大小为12M。
使用 gunzip etc.tar.gz
进行解压缩,还原成tar格式的打包文件。
xz格式的压缩与解压缩
使用 xz etc.tar
进行xz格式的压缩
可以看到,xz的压缩率最高,压缩后只有8M。
使用 unxz etc.tar.xz
进行xz格式的解压缩。
bzip2格式的压缩与解压缩
使用 bzip2 etc.tar
进行bzip2格式的压缩
我们可以看到,使用bzip2格式压缩后大小只有10M。
使用bunzip2 etc.tar.bz2
进行bzip2格式解压缩。
打包+压缩
tar支持的压缩格式有 gzip bzip2和xz格式三种。
tar zcf etc.tar.gz /etc
为打包压缩为gzip格式。
tar jcf etc.tar.bz2 /etc
为打包压缩为bzip2格式。
tar Jcf etc.tar.bz2 /etc
为打包压缩为xz格式。