压缩/解压/打包 命令 笔记

1. rar/unrar:(.rar)

压缩目录:$ rar a archive.rar dir_path #压缩一个目录到archive.rar,a选项是添加,也可以添加文件

加密:$ rar a -p123 archive.rar file1 file2 # 加密,密码是123

解压到当前目录:$ unrar e archive.rar

查看压缩文件内容:

$ unrar l archive.rar # l选项输出的只有文件名,没有相对路径

$ unrar v archive.rar # 带完整的路径名,unrar -h:v[b,t] Verbosely list archive [technical,bare]

$ unrar vb archive.rar # 输出路径文件名,不带其他信息

参考:http://www.lampdocs.com/using-rar-archiver-in-linux/

2. bzip2/bunzip2:(.bz2)

bunzip2等同于bzip2 -d,bzip2和gzip一样,只针对单个文件操作,不能用在文件夹上,想要用在文件夹上,先用tar打包,再压缩;要一一压缩某文件夹下的所有文件,可以用命令:find . -name "" -exec bzip2 '{}' ';'

-v:显示详细信息

-f:bzip2再解压和压缩时默认不会覆盖同名文件,使用此选项可以覆盖同名文件;

解压并替换.bz2文件:

bunzip2 archive.tar.bz2 # archive.tar.bz2 --> archive.tar

压缩并替换原来的文件:

bzip2 archive.tar # archive.tar --> archive.tar.bz2


3. tar: (.tar)

打包目录:

$ tar cf archive.tar dir_path # tar 命令对于目录没有特别的对待,c选项表示创建,f选项后面跟文件或者目录,f选项需要再后面

$ tar cf 

添加一个文件到.tar:

$ tar rf archive.tar file_to_add

更新.tar中的一个文件:

$ tar uf archive.tar newer_file

当更新一个文件后,tar把新文件接在.tar文件的后面,但并不删除旧的文件,解包的时候,接在后面的新文件自然覆盖前面的就文件:

[shenyan@T61 book]$ tar xvf overwrite.tar 
overwrite
overwrite2
overwrite # 又解压出一个overwrite,覆盖了前面的overwrite;
上面的overwrite.tar的结构应该如下:
  { 旧的 overwrite | overwrite2 | 新的 overwrite }
但解压的时候,加上 --keep-old-files,只能得到旧文件了;加上 --keep-newer-files 依然能得到新的文件;

查看.tar文件:

$ tar tf archive.tar # 只列出文件的相对路径名

$ tar tvf archive.tar # 列出详细信息

解包:

tar 解包的时候有个问题,它会覆盖已经存在的文件,不会给出提示;有两个选项可以防止这个问题,--keep-old-files(-k)和--keep-newer-files,但想要在覆盖的时候给提示:

$ tar --keep-newer-files -xvf archive.rar # 这时tar会给出消息如下:

[shenyan@T61 book]$ tar --keep-newer-files -xvf overwrite.tar
overwrite
tar: 当前的““overwrite””更新或一样新

$ tar --keep-old-files-xvf archive.rar # --keep-old-files的输出,不会提示是否有同名的文件,但是确实不会覆盖同名文件了;

[shenyan@T61 book]$ tar --keep-old-files -xvf overwrite.tar 
overwrite

同样打包的时候,也会覆盖已经存在的.tar文件,即使用了--keep-old-files和--keep-newer-files文件也没有用;


$ tar xvf archive.tar # 解压到当前目录




你可能感兴趣的:(压缩/解压/打包 命令 笔记)