Linux压缩与散列
散列
echo "yangpan220" | md5sum
注意上面的echo
会自动加上一个回车。可以用-n
去掉:
echo -n 'yangpan220' | md5sum
rar
unrar e file.rar # 解压rar
tar
磁带归档(Tape Archive),对创建一些文件的的归档和它们的解压很有用。
root@tecmint:~# tar -zxvf abc.tar.gz root@tecmint:~# tar -jxvf abc.tar.bz2 root@tecmint:~# tar -cvf archieve.tar.gz(.bz2) /path/to/folder/abc
-
c
– create a archive file. -
x
– extract a archive file. -
v
– show the progress of archive file. -
f
– filename of archive file. -
t
– viewing content of archive file. -
j
– filter archive through bzip2. -
z
– filter archive through gzip. -
r
– append or update files or directories to existing archive file. -
W
– Verify a archive file. -
wildcards
– Specify patters in unix tar command.
创建归档
tar cvf archive.tar file1 file2 file3
-
c
– Creates a new .tar archive file. -
v
– Verbosely show the .tar file progress. -
f
– File name type of the archive file.
创建.tar.gz
。z
代表了.tar.gz
使用gzip压缩。
tar cvzf MyImages-14-09-12.tar.gz /home/MyImages # OR tar cvzf MyImages-14-09-12.tgz /home/MyImages
创建tar.bz2
。j
代表了.tar.bz2
使用bzip压缩,它压缩的更好但是也更慢。
tar cvfj Phpfiles-org.tar.bz2 /home/php # OR tar cvfj Phpfiles-org.tar.tbz /home/php # OR tar cvfj Phpfiles-org.tar.tb2 /home/php
列出归档文件内容
t
列出文件:
tar tvf archive.tar tar tvf Phpfiles-org.tar.bz2 tar tvf staging.tecmint.com.tar.gz
从归档中取出文件
x
解压:
tar xvf archive.tar tar xvf thumbnails-14-09-12.tar.gz # gz 也一样 tar xvf videos-14-09-12.tar.bz2 # bz2也一样 # `-C`解压到指定目录 tar -xvf public_html-14-09-12.tar -C /home/public_html/videos/
只提取单个文件:
tar -xvf cleanfiles.sh.tar cleanfiles.sh tar -zxvf tecmintbackup.tar.gz tecmintbackup.xml tar -jxvf Phpfiles-org.tar.bz2 home/php/index.php # OR tar --extract --file=cleanfiles.sh.tar cleanfiles.sh tar --extract --file=tecmintbackup.tar.gz tecmintbackup.xml tar --extract --file=Phpfiles-org.tar.bz2 /home/php/index.php
提取多个文件:
tar -xvf tecmint-14-09-12.tar "file 1" "file 2" tar -zxvf MyImages-14-09-12.tar.gz "file 1" "file 2" tar -jxvf Phpfiles-org.tar.bz2 "file 1" "file 2"
通过--wildcards
提取指定模式的文件:
tar xvf archive.tar --wildcards '*.c' tar xvf Phpfiles-org.tar --wildcards '*.php' tar zxvf Phpfiles-org.tar.gz --wildcards '*.php' tar jxvf Phpfiles-org.tar.bz2 --wildcards '*.php'
添加文件到归档中
r
(append)添加文件到归档中:
tar -rvf tecmint-14-09-12.tar xyz.txt tar -rvf tecmint-14-09-12.tar php
但是 不能 添加文件到压纹文件.tar.gz
或.tar.bz2
,会 报错 :
$ tar -rvf MyImages-14-09-12.tar.gz xyz.txt tar: This does not look like a tar archive tar: Skipping to next header xyz.txt tar: Error exit delayed from previous errors
对归档中的文件进行更新
假如归档的newfile.c
要比先前已经归档的新,则添加更新的newfile.c
到归档里面
tar uvf archive.tar newfile.c
从归档中删除文件
tar --delete -f archive.tar file1.c
验证归档压缩文件
W
(verify)验证归档文件(.tar
,.tar.gz
,.tar.bz2
)完整性:
tar tvfW tecmint-14-09-12.tar
检查归档大小,以KB为单位:
$ tar -czf - tecmint-14-09-12.tar | wc -c 12820480 $ tar -czf - MyImages-14-09-12.tar.gz | wc -c 112640 $ tar -czf - Phpfiles-org.tar.bz2 | wc -c 20480
把归档文件分成多个部分
分割文件只能作为于一个文件,如果有多个文件的话要先压成一个。
先压缩文件:
tar -zcvf hello.tar.gz hello
压缩文件太大了要分分割:
split -b 100M -d -a 1 hello.tar.gz hello.tar.gz.
命令对文件进行分割。其中:
-
-b
,--bytes=SIZE
:指定每个分割文件的大小,单位有K
、M
、G
、P
等 -
-d
,--numeric-suffixes
:指定分割文件的后缀为数字 -
-a
,--suffix-length=N
:指定分割文件数字后缀的长度,如果是1
,后缀为0,1,2…
;如果是2,则为00,01,02…
默认是2
-
-C
,--line-bytes=SIZE
:指定每行最大的字节数 -
-l
,--lines=NUMBER
:指定每个文件最大的行数
解压时先拼成一个:
cat hello.tar.gz.* > hello.tar.gz tar -xvf hello.tar.gz
也可以直接用管道:
cat hello.tar.gz.* | tar -zxv
gzip
压缩文件
每个文件将被单独压缩
gzip file(s)
通常在压缩完成后,它会将原来的文件删除。我们可以使用-c
选项来保留原来的文件:
gzip -c file > file.gz
将一组文件压缩到一个单独的文件中:
cat file1 file2 file3 | gzip > archieve.gz
-i
检查压缩比
gzip -l archieve.gz
解压文件
gunzip -c archieve.gz
bzip2
压缩文件
一般情况下,针对压缩而言,Bzip2 不用什么选项,将被压缩的文件被传递为它的参数。 每个文件被单独压缩,且压缩文件以 ‘bz2′ 为后缀名。
bzip2 file1 file2 file3
使用-k
选项可以使得在压缩或解压缩之后保留原有的文件:
bzip2 -k fil1 file2 file3
解压
-d
选项被用来解压缩:
bzip2 -d file1.bz2
7z
里包含 3 个二进制文件: 7z, 7za 和 7zr,区别可参考: p7zip.wiki
创建归档
7zr a archive-name.7z file-name(s) / directory-name(s)
列出归档包含文件
7zr l archive-name.7z
提取归档文件
7zr e archive-name.7z
更新归档文件
7zr u archive-name.7z new-file
从归档文件中删除文件
7zr d archive-name.7z file-to-be-deleted
zip
zip
命令可以用来将文件压缩成为常用的zip格式。unzip
命令则用来解压缩zip文件。
压缩
我想把一个文件abc.txt
和一个目录dir1
压缩成为yasuo.zip
:
zip -r yasuo.zip abc.txt dir1
解压
我下载了一个yasuo.zip
文件,想解压缩:
unzip yasuo.zip
编码问题
如果中文有乱码,注意编码:
unzip -O CP936 xxx.zip # 用GBK, GB18030也可以
但是,有些发行版所带的 unzip 没有这个参数,比如 ArchLinux 就需要安装 unzip-iconv。
我当前目录下有abc1.zip
,abc2.zip
和abc3.zip
,我想一起解压缩它们:
unzip abc\?.zip
-
?
表示一个字符 -
*
表示任意多个字符。
查看内容
我有一个很大的压缩文件large.zip
,我不想解压缩,只想看看它里面有什么:
unzip -v large.zip
验证文件
我下载了一个压缩文件large.zip
,想验证一下这个压缩文件是否下载完全了:
unzip -t large.zip
我用-v
选项发现music.zip
压缩文件里面有很多目录和子目录,并且子目录中其实都是
歌曲mp3文件,我想把这些文件都下载到第一级目录,而不是一层一层建目录:
unzip -j music.zip
暴力破解密码
sudo apt-get install fcrackzip
fcrackzip -v -b -u -c a -p aaaaa test.zip
-
-v
就是可以看到更多的信息 -
-b
暴力破解 -
-u
用zip去尝试 -
-c
指定字符 a 就是说明密码是由小写字母组成的 -
-p
弄一个初始化的密码 aaaaaa 如果是纯数字000000 当然这里的长度都是6