Linux从入门到精通——文件在系统当中的传输
一.使用ssh在网络中进行传输
使用的命令为:scp
scp file user@ip:/dir ##上传文件
scp user@ip:/file dir ##下载文件
这个命令在上一篇文章中提到过,在此再次强调注意格式,非本机的文件路径一定得是绝对路径!
二.远程同步传输文件
虽然ssh传输非常的方便,但是当遇到较大的文件或者目录时,ssh传输的速度会非常的慢,这是因为ssh是一个远程复制的过程,
即在远程重新创建新的内容,而有一个传输速度更快的方法——rsync,rsync是linux系统下的数据镜像备份工具。使用快速增
量备份工具Remote Sync可以远程同步,支持本地复制,或者与其他SSH、rsync主机同步。
常用的参数为:
-r ##加斜杠为目录里的内容不包含目录,不加斜杠为包含目录在内的全部内容
-p ##同步文件的权限
-o ##同步文件所有人
-g ##同步文件所有组
-l ##同步软链接
-D ##同步设备文件
-t ##同步文件的时间戳
以下实验用两天虚拟机来做,部分实验用一台来做,每次传输完文件后净化实验环境,删除两边的文件重新创建传输
-r表示递归传输文件,不加斜杠为包含目录在内的全部内容,可以看到右边的虚拟机桌面上多了dev目录
默认传输时不同步文件的权限
可以看到加了-o后同步了文件的所有人
可以看到加了-g后同步了文件的所有组
不加l无法传输目录内的软链接,可以看到系统默认跳过了传输软链接文件
加了-l以后则可以传输软链接,创建软连接的命令为:ln -s 源文件 软链接文件的名称
可以看到加了-t以后同步了文件的时间戳
三.文件的归档
一个一个地传输文件必然会拖慢传输的速度,想要再提升传输速度就必须想办法把多个文件变为一个,这就要用到下面要
介绍的命令——tar
常用参数为:
-c ##创建归档文件
-v ##显示归档过程
-f ##指定归档文件名称
-t ##查看归档文件内容
-r ##添加文件到归档文件中
-x ##解档文件
--get ##解档指定文件
--delete ##删除归档文件中的指定文件
-C ##指定解档的目录
将/dev归档到桌面,变为show.tar,-v显示归档的过程
解档问价到桌面,可以看到桌面新出现了dev目录,-C 指定归档的目录
--get解档指定的文件,注意书写的格式
--delete删除归档内指定的文件,可以看到yum.conf已经被删除了
注意:归档不是压缩,这一点需要区分清楚,归档文件的后缀是.tar,压缩文件的后缀在下面将会介绍
四.文件的压缩
文件传输的速度不光取决于压缩的方式,也取决于为文件的大小,为了再次提高传输的速度,我们可以想办法
将文件变得再小一点,这就要用到压缩了。简单的说,就是经过压缩软件压缩的文件叫压缩文件,压缩的原理
是把文件的二进制代码压缩,把相邻的0,1代码减少,比如有000000,可以把它变成6个0 的写法60,来减少该文
件的空间。压缩文件的基本原理是查找文件内的重复字节,并建立一个相同字节的"词典"文件,并用一个代码表示,
比如在文件里有几处有一个相同的词"中华人民共和国"用一个代码“中国”来表示并写入"词典"文件,这样就可以达
到缩小文件的目的。
常用的压缩格式有:zip、gz、bz2、xz等
1.zip
zip -r xxx.tar.zip ##压缩文件
unzip xxx.tar.zip ##解压文件
2.gz
gzip xxx.tar ##压缩文件
gunzip xxx.tar.gz ##解压文件
tar zcf xxx.tar.gz /dir ##在创建归当时直接压缩
tar zxf xxx.tar.gz /dir ##解压文件并解档
这种格式是Linux下使用非常普遍的一种压缩方式,兼顾了压缩时间(耗费CPU)和压缩空间(压缩比率),其实这是对tar包进行gzip算法的压缩
3.bz2
bzip2 xxx.tar ##压缩文件
bunzip2 xxx.tar.bz2 ##解压文件
tar jcf xxx.tar.bz2 /dir ##在归档时直接压缩
tar jxf xxx.tar.bz2 -C /dir ##解压文件并解档
这种格式压缩比率比gz大,即压缩后占用更小的空间,使得压缩包看起来更小。
但同时在压缩,解压的过程却是非常耗费CPU时间。
4.xz
xz xxx.tar ##压缩文件
unxz xxx.tar.xz ##解压文件
tar Jcf xxx.tar.xz /dir ##归档并压缩
tar Jxf xxx.tar.xz -C /dir ##解档并解压
xz压缩的文件更小,当然也同bz2一样,会耗费更多的CPU时间