文章目录
八、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 root@192.168.0.108:/mnt #将B中file文件传输给A的/mnt
[root@localhost Desktop]$ scp -r dir root@192.168.0.108:/mnt #将B中的目录dir传输给A的/mnt
[root@localhost Desktop]$ scp -q file root@192.168.0.108:/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 root@192.168.0.108:/mnt #把file复制到A的/mnt
[root@localhost Desktop]$ rsync -r dir root@192.168.0.108:/mnt #把dir目录复制到A的/mnt
[root@localhost Desktop]$ rsync -ogt file root@192.168.0.108:/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 root@192.168.0.108
- 创建测试脚本
[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 #解压

本文详细介绍Linux系统中文件传输的优化方法,包括scp与rsync的使用对比,以及tar、zip、gzip、bzip2和xz等压缩工具的特性与应用场景。通过实际案例,深入解析如何高效管理和压缩文件。

被折叠的 条评论
为什么被折叠?



