您的位置:首页 > 其它

文件打包压缩与远程传输

2017-08-18 19:20 253 查看
在文件的传输以及文件的整理过程中我们经常会用到压缩。虽然linux下文件名与文件的属性没有多大关系,但是为了辅助我们人脑的记忆方式,通常在压缩文件时会以不同的扩展名来命名压缩文件。常见的扩展名有:

*.Z             #compress程序压缩的文件
*.gz            #gzip程序压缩的文件
*.bz2           #bzip2程序压缩的文件
*.zip           #zip程序压缩的文件
*.xz            #xz程序压缩的文件
*.tar           #tar程序打包的数据,并没有压缩过
*.tar.gz        #tar程序打包的文件,经过gzip的压缩
*.tar.bz2       #tar程序打包的文件,经过bzip2的压缩


linux上最常见的压缩命令就是gzip与bzip2了,不管是compress还是gzip或是bzip2这些压缩命令都只能针对一个文件来压缩与解压缩,这样一来每次压缩与解压缩都要一大堆文件,非常的不方便。

tar可以将很多文件打包成一个文件,甚至可以是目录。单纯的tar功能仅仅是”打包”,就是将文件集结成一个文件,事实上并没有提供压缩的功能。将tar和压缩命令结合起来使用实现强大的打包压缩功能。

compress命令

这是一个非常老旧的命令现在已经很少用了,而且gzip也可以解开compress压缩的文件。但是我们还是来学习一下这个命令的使用。

yum intsall ncompress -y 安装这个命令

compress   [-rcv]  文件或者目录
-r : 连同目录下的文件也同时给与压缩
-c : 将压缩数据标准输出(打印屏幕)
-v : 可以显示出压缩后的文件信息以及压缩过程中的一些文件名的变化




可以看到压缩后文件明显变小了,源文件会不见,新压缩文件生成,而且扩展名是.Z,用uncompress再解压就行了,-c这个参数会将压缩过程写入到标准输出,而不是写入成为.Z的压缩文件。所以我们可以通过输出重定向将数据输出成为另一个文件名。

2.gzip与zcat

gzip可以解开compress,zip与gzip等软件所压缩的文件

gzip        [-vdtv]     文件名
zcat        文件名.gz
参数:
-c  : 将压缩的数据输出到屏幕上,可通过数据流重定向来处理
-d :解压缩的参数
-t :可以用来检验一个压缩文件的一致性,看看文件有无错误
-v :可以显示出原文件/压缩文件的压缩比等信息
-# :压缩等级,-1最快,但是压缩比差,-9最慢,压缩比最好默认是-6




zcat 会将gzip压缩的文件解压之后的内容读出来显示到屏幕上,(cat可以读取纯文本文件,zcat可以读取纯文本被压缩后的压缩文件)

相比compress gzip提供了更好的压缩比,而且gzip也能解压compress压缩的文件,从而取代了compress,使用gzip压缩的文件还可以被windows下的WRAR解压

3 . bzip2,bzcat

这个命令的压缩比要比gzip更好,用法几乎和gzip相同

命令格式:bzip2      [-cdkzv#]       文件名
bzcat       文件名.bz2
参数:
-c :  将压缩的数据输出到屏幕上,可通过数据流重定向来处理
-d : 解压缩的参数
-k : 保留源文件,而不会删除
b4d0
原始的文件
-z :压缩的参数(与-d相对应)
-v :  可以显示出原文件/压缩文件的压缩比等信息
-# : 与gzip一样


bzcat可以将压缩文件的内容读出来,如果我们仅想读取文件的内容,那我们大可不必解压缩,直接用bzcat来查看文件的内容就可以了。



注意:不管是gzip还是bzip2解压都不仅可以使用-d参数还可以使用

gunzip 和bunzip2来进行比如:



4.tar打包

如前所述,打包就是将很多文件整合成一个文件,虽然gzip与bzip2也能对目录进行压缩,但是,这两个命令也只不过是对目录下的所有文件分别进行压缩,而不像在windows下我们可以用WinRAR,7zip等软件将好多文件打包成一个文件。在linux下,我们用tar这个命令可以将多个目录或文件打包成一个大文件,同时支持gzip/bzip2将该文件进行压缩。由于这个命令使用广泛,目前windows的WinRAR也支持tar.gz文件名的解压缩。

tar     [-j][-z][cvf]  指定生成的文件名     需要打包压缩的文件名或目录
参数:
-f          ##指定生成包的名字
-c          ##创建包
-v          ##显示创建过程
-t          ##查看包中内容
-x          ##解包
-r          ##添加文件到包中
--delete filename   ##删除包中指定文件
--get filename      ##取出包中指定文件


示例:

gzip
gzip xxxx.tar                     ##压缩=====>xxxx.gz
gunzip  xxxx.tar.gz               ##解压=====>xxxx.tar
tar zcvf xxxx.tar.gz 目标文件      ##打包压缩文件
tar zxvf xxxx.tar.gz              ##解包解压缩xxxx.tar.gz===>xxxx

bz2
bzip2 xxxx.tar                    ##压缩=====>xxxx.bz2
bunzip2 xxxx.tar.bz2              ##解压=====>xxxx.tar
tar jcvf xxxx.tar.bz2 目标文件     ##打包压缩文件
tar jxvf xxxx.tar.bz2             ##解包解压缩xxxx.tar.bz2===>xxxx

xz
xz xxxx.tar                 ##压缩=====>xxxx.xz
unxz xxxx.tar.xz            ##解压=====>xxxx.tar
tar Jcvf xxxx.tar.xz    目标文件        ##打包压缩文件
tar Jxvf xxxx.tar.xz                    ##解包解压缩xxxx.tar.xz===>xxxx

zip
zip -r xxx.tar.zip                  ##压缩=====>
unzip xxx.tar.zip                   ##解压=====>


远程文件传输

1.scp远程复制,scp是基于ssh的登陆进行安全的远程文件拷贝命令。

scp file  user@ip:/directory                ##上传文件
scp  -r dir user@ip:/directory              ##上传目录
scp  user@ip:/filename  /direcotry          ##下载文件
scp -r  user@ip:/directory  /direcotry      ##下载目录


2.rsync

是一款实现远程同步功能的软件,它在同步文件的同时,可以保持原来文件的权限、时间、软硬链接等附加信息。 rsync是用 “rsync 算法”提供了一个客户机和远程文件服务器的文件同步的快速方法,而且可以通过ssh方式来传输文件,这样其保密性也非常好.

rsync  file|direcotry       user@ip:/directory
rsync  user@ip:/directory   /directory
-r  ##同步目录
-l  ##不忽略链接         ##新建连接:ln -s 原文件 链接文件
-t  ##不忽略时间戳
-p  ##不忽略特殊权限
-g  ##不忽略组id信息
-o  ##不忽略用户id信息
-D  ##不忽略设备文件


3.sftp 常用于文件推送

(安全文件传输协议)与ftp 有着几乎一样的语法和功能。但是与lftp不同的是它并不使用ftp的守护进程进行连接。sftp本身没有单独的守护进程,它必须使用sshd守护进程(端口号默认是22)来完成相应的连接操作。使用SFTP是非常安全的。但是,由于这种传输方式使用了加密/解密技术,所以传输效率比普通的FTP要低得多。

sftp   root@172.25.20.1:/root/test.sh      #直接将172.25.20.1主机上的文件复制到本地
sftp   root@172.25.20.1:/root               #直接连接到172的root目录下,这样就可以使用getput等命令了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: