实验环境:
需要两台处于同一网段的虚拟机:
client : 172.25.254.10
server : 172.25.254.20
一.SCP命令
SCP命令的主要作用是实现Linux与Linux系统之间的文件传输。
SCP命令时基于SSH协议,所以两台服务器的sshd服务必须处于开启状态,否则无法完成上传与下载操作。
#1.上传文件
scp linux本地文件路径 远程用户名@linux主机地址:远程路径
#2.下载文件
scp 远程用户名@linux主机地址:资源路径 linux本地文件路径
常用选项:
-r #递归操作
-q #静默传输
-P #指定端口 如果修改了ssh的端口需要加上这个参数
案例:将client服务器的/mnt/test文件上传到server服务器的/root目录下
#在client端
scp /mnt/test root@172.25.254.20:/root/
案例:将server服务器的/mnt/test文件下载到client服务器的/root目录下
#在client端
scp root@172.25.254.20:/mnt/test /root/
二.rsync命令
rsync命令是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件。rsync只传送两个文件不同的部分,而不是每次都整份传送,因此速度相当快。但是当小文件众多的情况下,rsync会导致硬盘I/O非常高。
rsync linux本地文件路径 远程用户名@linux主机地址:远程路径
rsync 远程用户名@linux主机地址:资源路径 linux本地文件路径
常用选项:
-r #递归复制
-l #复制链接
-p #复制权限
-t #复制时间戳
-o #复制拥有者
-g #复制拥有组
-D #复制设备文件
三.scp与rsync对比
dd命令:
dd if=/dev/zero of=文件名称 bs=1M count=1
#说明:
if代表输入文件
of代表输出文件
bs代表字节为单位的块大小。
count代表被复制的块。
其中/dev/zero是一个字符设备,会不断返回0值字节。
- 建立实验素材
dd if=/dev/zero of=/mnt/file1 bs=1M count=10
dd if=/dev/zero of=/mnt/file2 bs=1M count=20
dd if=/dev/zero of=/mnt/file3 bs=1M count=30
以上分别建立了三个文件大小分别为10M 20M 30M
- 在server中配置ssh免密连接
ssh-keygen
ssh-copy-id -i /root/.ssh/id_rsa.pub. root@172.25.254.20
- 使用脚本测试传输时间
vim /mnt/test.sh
time scp -qr /root/Desktop root@172.25.254.20:/root/Desktop
time scp -qr /root/Desktop root@172.25.254.20:/root/Desktop
time scp -qr /root/Desktop root@172.25.254.20:/root/Desktop
vim /mnt/test1.sh
time rsync -raCq /root/Desktop root@172.25.254.20:/root/Desktop
time rsync -raCq /root/Desktop root@172.25.254.20:/root/Desktop
time rsync -raCq /root/Desktop root@172.25.254.20:/root/Desktop
- 执行以上脚本后会发现使用scp命令三次时间几乎一致,而用rsync命令后两次时间远小于第一次。
这是因为scp是相当于复制,黏贴,如果有的话是覆盖,比较耗时间,不智能。rsync 第一次是把所有文件同步过去,当文件修改后,只把修改的文件同步过去。
四.文件的归档和压缩
1.打包归档的概念
打包:默认情况下,Linux的压缩概念一次只能压缩一个文件。针对多文件或文件夹无法进行直接压缩。所以需要提前对多个文件或文件夹进行打包,这样才可以进行压缩操作。
tar [选项] 打包后的名称.tar 多个文件或文件夹
[选项]:
-c #打包
-v #显示打包的进度
-f #指定打包后的文件名称
-t #查看打包的文件内容
-r #向归档文件中添加文件
-x #解档
-u #update缩写,更新原打包文件中的文件
--get #解档指定文件
--delete #删除指定文件
-C #指定解档路径
案例:把a.txt、b.txt、c.txt文件打包到abc.tar文件中
tar -cvf abc.tar a.txt b.txt c.txt
案例:把etc文件夹进行打包etc.tar
tar -cvf etc.tar /etc/
案例:查看etc.tar中内容
tar -tf etc.tar
案例:向etc.tar中添加文件
tar -rf etc.tar test1
案例:将etc.tar解档
tar -xf etc.tar
案例:解档指定文件
tar -f etc.tar --get test1
案例:删除指定文件
tar -f etc.tar --delete test1
案例:指定解档路径
tar -xf etc.tar -C /root/Desktop
2.压缩文件
zip格式压缩
zip -r etc.tar.zip mnt.tar #zip格式压缩 -r递归
unzip etc.tar.zip #zip格式解压缩
可加选项:
-d #解压到指定路径下
Tips:zip格式在Windows以及Linux中都可以使用。
gzip
gzip etc.tar #gzip格式压缩
gunzip etc.tar.gz #gzip格式解压缩
bzip
bzip2 etc.tar #bzip2格式压缩
bunzip2 etc.tar.bz2 #bzip2格式解压缩
xz
xz etc.tar #xz格式压缩
unxz etc.tar.xz #xz格式解压缩
压缩速度:gzip > bzip2 > xz
压缩率:gzip < bzip2 < xz
3.打包+压缩
-z :使用gzip压缩工具把打包后的文件压缩为.gz
-j :使用bzip2压缩工具把打包后的文件压缩为.bz2
-J :使用xz压缩工具把打包后的文件压缩为.xz
#gzip
tar -zcf etc.tar.gz /etc
tar -zxf etc.tar.gz
#bzip2
tar -jcf etc.tar.bz2 /etc
tar -jxf etc.tar.bz2
#xz
tar -Jcf etc.tar.xz /etc
tar -Jxf etc.tar.xz