1.9 Linux系统中的文件传输

实验环境简述

本章内容主要集中在主机间文件传输的方法和使用,因此需要至少2台主机(虚拟机也可).
同时,为了保证实验的顺利执行,需要临时关闭火墙.

systemctl disable --now firewalld		##关闭火墙

文件传输指令

SCP命令

scp命令用于在主机与主机间进行文件传输,特点为无论文件是否存在都会进行一次传输,即非增量传输.下文会对这一特性进行验证.
当从本机将文件传输到远程主机时即为传统意义上的上传;反之,从远程主机将文件取回本机即为传统意义上的下载.
两者只有命令顺序不同,实现方法相同.

scp 本地文件 远程主机用户@远程主机IP:远程主机存储文件位置的绝对路径
##将本地文件传输到远程主机,同时指定了用户和存储位置.
scp 远程主机用户@远程主机IP:远程主机存储文件位置的绝对路径 本地文件
##将远程主机上的文件传输回本地.

上传格式下载格式
当然,scp命令也可以用来传输目录.

scp -r 本地目录 远程主机用户@远程主机IP:远程主机存储文件位置的绝对路径
##-r参数表示操作对象为目录

文件夹传输

从图中可以看出,在执行命令后会有进度提示,在批量进行文件传输时,过多的进程提示会影响监控的观感和准确度,因此也存在静默运行(不显示完成进度)的参数:-q.

scp -q 本地文件 远程主机用户@远程主机IP:远程主机存储文件位置的绝对路径

静默运行

Rsync命令

rsync命令也用于进行文件传输,与scp命令的区别是它的传输是增量传输.简言之,当传输的文件中一部分已经存在时,仅会传输不存在的文件.在进行批量更新时较scp命令更节约时间和系统资源.

rsync 本地文件 远程主机用户@远程主机IP:远程主机存储文件位置的绝对路径
##将本地文件增量传输到远程主机,同时指定了用户和存储位置.
rsync 远程主机用户@远程主机IP:远程主机存储文件位置的绝对路径 本地文件
##将远程主机上的文件增量传输回本地.

因为rsync命令还被应用在文件同步等方面,因此其参数较多,以下列出常用的.

-v, --verbose 		详细模式输出
-q, --quiet			精简输出模式
-a, --archive 		归档模式,表示以递归方式传输文件,并保持所有文件属性
-r, --recursive 	对子目录以递归模式处理
-R, --relative 		使用相对路径信息
-l, --links 		保留软链结
-L, --copy-links 	想对待常规文件一样处理软链结
-H, --hard-links 	保留硬链结
-p, --perms 		保持文件权限
-o, --owner 		保持文件属主信息
-g, --group 		保持文件属组信息
-D, --devices 		保持设备文件信息
-t, --times 		保持文件时间信息

增量传输结果

SCP与Rsync命令的比较

要对两者的实现进行比较,还是直接进行横向比较直观.

  • 生成新的单个大文件用于测试
  • 分别用scprsync命令对大文件进行传输
  • 各传输三次,保证耗时准确
使用dd命令生成新的1G大小文件,对于指令运行逻辑不必深究.

生成测试1G文件分别编写两个命令的非交互传输脚本为实验作准备.

##SCP.sh内容实现
time scp -qr bigfile root@172.25.254.136:/root/Desktop
time scp -qr bigfile root@172.25.254.136:/root/Desktop
time scp -qr bigfile root@172.25.254.136:/root/Desktop
##向虚拟机传输1G用测试文件三次,每次都进行时间统计.

##Rsync.sh内容实现
time rsync -aCq bigfile root@172.25.254.136:/root/Desktop
time rsync -aCq bigfile root@172.25.254.136:/root/Desktop
time rsync -aCq bigfile root@172.25.254.136:/root/Desktop
##向虚拟机传输1G用测试文件三次,每次都进行时间统计.

事前准备完备,可以进行实验了.
耗时分别如下所示
SCP耗时Rsync耗时
不难看出以下几点.

  • 两种方式在初次传输时所消耗的系统占用时间近似.
  • 在之后的传输中,scp依旧对已经存在的文件进行覆盖传输
  • rsync仅仅检查了文件是否存在,在确认已经存在后并未复制文件

文件的归档压缩

使用tar指令进行归档

当需要进行批量传输时,将细碎文件直接进行传输会耗费大量的时间,如果将文件打包成单一文件则耗时更短.

tar
		c			##创建打包文件
		f			##对文件名进行指定
		x			##解包文件
		v			##显示过程
		t			##查看
		r			##向已经存在的打包文件中添加文件
		--get		##从打包文件中提取指定文件
		--delete	##从打包文件中删除指定文件
		-C			##指定解包路径
		-P			##不自动删除根目录的记录

参数之间可以进行组合,实现具体功能.如下进行部分举例.

tar cvf Test.tar /etc/		##将etc目录下的所有文件打包为Test.tar,并显示打包过程
tar xf Test.tar				##在当前目录下解包Test.tar
tar tf Test.tar				##查看Test.tar打包文件中的内容
tar xf Test/tar -C /mnt		##将Test.tar解包到mnt目录下

值得一提的是,当打包大量文件时会发现打包文件比原文件大小小不少.这并不是进行了压缩,而是因为文件内保存链接,而链接本身也占用容量,而链接不计算在打包内,因此看起来文件变小.
打包时默认去掉打包中文件目录的根符号,避免覆盖根目录下可能存在的文件.相当于将绝对路径变成相对路径,连接在当前目录下.-P参数的作用也在这里.

文件压缩指令

打包是将文件变为一个文件包,而压缩则是在此基础上对文件大小进行了压缩,Linux下常用的压缩格式有zip,bz2,xz,gz.

##zip压缩命令
zip -r 压缩文件名 待压缩文件
##解压命令
unzip 压缩文件名

##gzip压缩命令
gzip 压缩文件名 待压缩文件
##gzip解压命令
gunzip 压缩文件名

##bzip2压缩命令
bzip2 压缩文件名 待压缩文件
##bzip2解压命令
bunzip2 压缩文件名

##xz压缩命令
xz-z 压缩文件名 待压缩文件
##xz解压命令
x -k 压缩文件名

当然也可以将压缩与打包组合起来使用

tar zcf 压缩文件名 待压缩文件		##打包压缩为gz格式
tar jcf 压缩文件名 待压缩文件		##打包压缩为bz2格式
tar Jcf  压缩文件名 待压缩文件		##打包压缩为xz格式

打包过程解压过程查看包内文件单独提取和单独删除单独删除参数zip压缩压缩率组合操作

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值