文章目录
八、Linux系统中的文件传输优化
实验环境
两台可以通信的主机
A IP:192.168.0.108
B IP:192.168.0.109
8.1 文件传输
8.1.1 scp
格式:
- scp 本地文件 远程主机用户@远程主机IP:远程主机目录
- scp 远程主机用户@远程主机IP:远程主机目录 本地文件
命令 | 效果 |
---|---|
scp -p | 保留原文件的修改时间,访问时间,访问权限 |
scp -q | 不显示传输进度条 |
scp -r | 递归复制整个目录 |
例子1
[root@localhost Desktop]$ scp file [email protected]:/mnt #将B中file文件传输给A的/mnt
[root@localhost Desktop]$ scp -r dir [email protected]:/mnt #将B中的目录dir传输给A的/mnt
[root@localhost Desktop]$ scp -q file [email protected]:/mnt #将B中file文件传输给A的/mnt 不显示进度条
8.1.2 rsync
格式
- rsync 本地文件 远程主机用户@远程主机IP:远程主机目录
- rsync 远程主机用户@远程主机IP:远程主机目录 本地文件
代码 效果 | |
---|---|
rsync -r | 复制目录 |
rsync -l | 复制链接 |
rsync -p | 复制权限 |
rsync -t | 复制时间戳 |
rsync -o | 复制拥有者 |
rsync -g | 复制拥有组 |
rsync -D | 复制设备文件 |
例子
[root@localhost Desktop]$ rsync file [email protected]:/mnt #把file复制到A的/mnt
[root@localhost Desktop]$ rsync -r dir [email protected]:/mnt #把dir目录复制到A的/mnt
[root@localhost Desktop]$ rsync -ogt file [email protected]:/mnt # 复制拥有者,拥有组,时间戳
8.1.3 scp与rsync的比较
(1)实验素材:
- B中建立文件
[root@localhost Desktop]$ dd if=/dev/zero of=/mnt/file1 bs=1M count=10 # dd=截取,if=inputfile,of=outputfile,bs=blocksize,count=快的个数
[root@localhost Desktop]$ dd if=/dev/zero of=/mnt/file2 bs=1M count=20
[root@localhost Desktop]$ dd if=/dev/zero of=/mnt/file3 bs=1M count=30
- 在主机之间建立免密登陆(在B上进行)
[root@localhost Desktop]$ ssh-keygen
[root@localhost Desktop]$ ssh-copy-id -i /root/.ssh/id_pub [email protected]
- 创建测试脚本
[root@localhost Desktop]$ vim check_scp.sh # 检测scp的传输时间
[root@localhost Desktop]$ vim check_rsync.sh #检测rsync的传输时间
-
执行
总结 -
scp是相当于复制,黏贴,如果有的话是覆盖,比较耗时间,不智能。
-
rsync是复制,如果有重复的文件,会直接跳过,而且他自己的算法优化。
-
scp是把文件全部复制过去,当文件修改后还是把所有文件复制过去,rsync 第一次是把所有文件同步过去,当文件修改后,只把修改的文件同步过去。
8.2 文档归档-tar
tar
代码 | 效果 |
---|---|
c | 创建 |
f | 指定文件名称 |
x | 解档 |
t | 查看 |
r | 向归档文件中添加文件 |
- -get | 解档指定文件 |
- -delete | 删除指定文件 |
-C | 指定解档路径 |
- 例子
[root@localhost Desktop]$ tar cf etc.tar /etc/ #将/etc/下的文件打包并命名为etc.tar
[root@localhost Desktop]$ tar tf etc.tar #查看包里文件
[root@localhost Desktop]$ tar rf etc.tar file # 把文件file添加进归档里面
[root@localhost Desktop]$ tar xf etc.tar 解挡
[root@localhost Desktop]$ tar f etc.tar --get file # 从归档里把file文件解档
[root@localhost Desktop]$ tar f etc.tar --delete file # 从归档文件中把file文件删除
[root@localhost Desktop]$ tar xf etc.tar -C /mnt #指定解档路径为/mnt
- 例子
8.3 文件的压缩(压缩程度逐渐增大)
8.3.1 zip
[root@localhost Desktop]$ zip -r etc.tar.zip etc.tar #压缩
[root@localhost Desktop]$ du -sh etc.tar.zip #查看压缩包大小
[root@localhost Desktop]$ unzip etc.tar.zip #解压
8.3.2 gzip
[root@localhost Desktop]$ gzip etc.tar #压缩
[root@localhost Desktop]$ du -sh etc.tar.gzip #查看压缩包大小
[root@localhost Desktop]$ gunzip etc.tar.gz #解压
8.3.3 bzip2
[root@localhost Desktop]$ bzip2 etc.tar #压缩
[root@localhost Desktop]$ du -sh etc.tar.bzip2 #查看压缩包大小
[root@localhost Desktop]$ bunzip2 etc.tar.gz #解压
8.3.4 xz
[root@localhost Desktop]$ xz etc.tar #压缩
[root@localhost Desktop]$ du -sh etc.tar.xz #查看压缩包大小
[root@localhost Desktop]$ unxz etc.tar.gz #解压
8.4 打包压缩
8.4.1 tar+gzip ( z )
[root@localhost Desktop]$ tar zcf etc.tar.gz /etc #打包压缩
[root@localhost Desktop]$ tar zxf etc.tar.gz #解压
8.4.2 tar+bzip2 ( j )
[root@localhost Desktop]$ tar jcf etc.tar.bz2 /etc #打包压缩
[root@localhost Desktop]$ tar jxf etc.tar.bz2 #解压
8.4.3 tar+xz ( J )
[root@localhost Desktop]$ tar Jcf etc.tar.xz /etc #打包压缩
[root@localhost Desktop]$ tar Jxf etc.tar.xz #解压