Linux文件的打包和压缩

1、打包和解打包

把多个文件和目录存储到一个文件中,文件的大小等于所有汇合文件和目录的总和。方便压缩文件,并且目录不能直接压缩,目录要经过打包才能压缩。

  • 1.1 tar 打包操作

命令完整格式:tar [选项] 源文件或目录

  • 选项
    主要是挑出常用增删改查的选项参数
选项参数说明
-c创建包文件
-f指定包的文件名。创建、添加、删除、查看都要指定包的文件名
-v显示打包的过程
A添加tar文件,相当于把tar文件的集合添加到目标包文件下
-r添加目录到包下,会出现重复添加,建议用-u参数
-t查看包的文件信息
–delete从归档(非磁带!)中删除
-u更新包中的文件,仅追加比归档中副本更新的文件
–remove-files打包后删除源文件
    • 打包文件或目录
      打包文件
    • 添加tar文件
      在这里插入图片描述
    • 添加普通文件或目录到tar下
    • 删除包文件下的目录或文件
      在这里插入图片描述
    • 更新包的文件。建议追加文件时,都用这个参数,用-r参数会重复添加文件到包下
[root@VM_0_6_centos tmp]# tar -rf new.tar mv2 #追加mv2目录到new.tar包
[root@VM_0_6_centos tmp]# tar -tf new.tar  #查看new.tar的文件信息
movie/
mv2/
[root@VM_0_6_centos tmp]# tar -rf new.tar mv2 #再次追加mv2目录到new.tar
[root@VM_0_6_centos tmp]# tar -tf new.tar #发现包下重复添加,不会覆盖
movie/
mv2/
mv2/
[root@VM_0_6_centos tmp]# tar -f new.tar --delete mv2 # 把归档下的mv2目录删除
[root@VM_0_6_centos tmp]# tar -tf new.tar #查看包下的文件信息,mv2目录成功移除
movie/
[root@VM_0_6_centos tmp]# tar -tf new.tar
[root@VM_0_6_centos tmp]# tar -tf new.tar
[root@VM_0_6_centos tmp]# tar -uf new.tar mv2
[root@VM_0_6_centos tmp]# tar -uf new.tar mv2
[root@VM_0_6_centos tmp]# tar -tf new.tar #执行两次追加命令(-u参数),包下不重复
movie/
mv2/

1.2 tar解打包操作

命令格式:tar [选项] 包名

  • 选项

    选项参数说明
    -x解打包
    -C指定解包的目录
    –keep-old-files解包时到目录下时,当有重复的文件名时,不会覆盖重复文件。默认是覆盖
[root@VM_0_6_centos tmp]# tar -xf new.tar # 把归档文件解到工作目录
[root@VM_0_6_centos tmp]# tar -xf new.tar -C  ~/test_tar/ # 把归档文件解到指定目录
[root@VM_0_6_centos tmp]# tar -xf new.tar --keep-old-files # 不会覆盖文件
tar: bashrc: Cannot open: File exists
tar: man_db.conf: Cannot open: File exists
tar: appendFile: Cannot open: File exists
tar: Exiting with failure status due to previous errors
#上面的结果展示,表示bashrc、man_db.conf、appendFile文件已在工作目录下存在,覆盖失
败,当然归档下的其他文件解打包是成功的

2、压缩和解压

  • 2.1 tar压缩和解压命令

tar本身不具有压缩功能,他是调用压缩功能实现的。tar没有压缩归档文件的命令,但是支持同时打包压缩文件或目录
命令完整格式:tar [选项] 压缩名 源文件或目录

    • 选项
选项参数说明
-zcf把文件或目录压缩成 “.tar.gz” 格式
-zxf解压缩".tar.gz" 格式 的文件
-jcf把文件或目录压缩车工 “.tar.bz2” 格式
-jxf解压缩 “.tar.bz2” 格式 的文件
#把appendDir目录、appendFile文件、new.tar归档文件压缩到new.tar.gz文件
[root@VM_0_6_centos tmp]# tar -zcvf new.tar.gz appendDir appendFile new.tar
appendDir/
appendFile
new.tar

  • 2.2 zip格式文件压缩和解压

    • zip压缩命令

命令格式:zip [选项] 压缩包名 源文件或源目录列表

    • 选项
选项参数说明
-r压缩目录,需要使用这个参数。
-d删除文件或目录
-m压缩文件完成后,删除源文件
-u更新压缩文件,即往压缩文件中添加新文件或更新文件
#zip命令不使用-r压缩目录,发现压缩后目录容量是0,明显是错误的
[root@VM_0_6_centos DCBreakfast]# zip test_zip.zip DCBreakfast
  adding: DCBreakfast/ (stored 0%)
 #zip命令使用-r压缩目录,效果如下
[root@VM_0_6_centos DCBreakfast]# zip -r test_zip.zip DCBreakfast
  adding: DCBreakfast/ (stored 0%)
  adding: DCBreakfast/user.csv (deflated 41%)
  ..............
#删除压缩文件中的一个文件
[root@VM_0_6_centos DCBreakfast]# zip test_zip.zip -d DCBreakfast/view.py
deleting: DCBreakfast/view.py
#删除压缩文件的一个目录
[root@VM_0_6_centos DCBreakfast]# zip test_zip.zip -d DCBreakfast/logs/
deleting: DCBreakfast/logs/

    • unzip解压缩命令

unzip为.zip压缩文件的解压缩程序

命令完整格式:unzip [选项] 压缩包名

    • 选项
选项参数说明
-d解压到指定目录
-n解压时不要覆盖原有的文件。遇到重名的文件,程序默认询问
-o解压时覆盖原有的文件。遇到重名的文件,程序默认询问
-u更新压缩文件,即往压缩文件中添加新文件。
-v查看压缩的文件信息
#解压到指定目录
[root@VM_0_6_centos DCBreakfast]# unzip test_zip.zip -d test_dir
Archive:  test_zip.zip
   creating: test_dir/DCBreakfast/
  inflating: test_dir/DCBreakfast/user.csv  
  inflating: test_dir/DCBreakfast/server_version.csv  
   creating: test_dir/DCBreakfast/.idea/
	...........
#解压部分文件到当前工作目录
[root@VM_0_6_centos DCBreakfast]# unzip test_zip.zip DCBreakfast/urls.py -d test_dir/
Archive:  test_zip.zip
  inflating: test_dir/DCBreakfast/urls.py  
  • 2.3 gz格式文件的压缩和解压

    • gzip压缩命令

gzip 命令只能用来压缩文件,不能压缩目录,即便指定了目录,也只能压缩目录内的所有文件。

命令格式:gzip [选项] 压缩名 文件名或目录

      • 选项
选项参数说明
-r压缩目录
-c将压缩数据输出到标准输出中,并保留源文件。如果压缩的是目录时,不建议使用这个参数,压缩的目录解压后发现是文件格式的
-l对每一个压缩文件,显示以下字段:压缩文件的大小、未压缩文件的大小、压缩比、未压缩文件的名称
-d对压缩文件进行解压缩

在 Linux 中,打包和压缩是分开处理的。而 gzip 命令只会压缩,不能打包,所以才会出现没有打包目录,而只把目录下的文件进行压缩的情况。

#-r是压缩目录 -c是保留源文件。以下直接压缩目录是错误的做法,会导致解压后是一个文件。先归档文件,再压缩
[root@VM_0_6_centos tmp]# gzip -rc DCBreakfast>DCBreakfast.gz

#直接压缩目录,发现是压缩是把目录下的文件进行压缩
[root@VM_0_6_centos tmp]# gzip -r DCBreakfast
[root@VM_0_6_centos tmp]# ll DCBreakfast
total 64K
-rw-r--r-- 1 root root  304 May  6 09:15 asgi.py.gz
-rw-r--r-- 1 root root  17K May  6 09:39 DCPage.html.gz
-rw-r--r-- 1 root root   32 May  6 09:15 __init__.py.gz
drwxr-xr-x 3 root root 4.0K May 11 19:51 logs
drwxr-xr-x 2 root root 4.0K May 11 19:51 __pycache__
-rw-r--r-- 1 root root   69 May  6 09:15 server_version.csv.gz

#压缩目录时,有使用-c参数,导致目录压缩后改变格式
[root@VM_0_6_centos tmp]# ll -d DCBreakfast
drwxr-xr-x 6 root root 4.0K May 11 20:26 DCBreakfast
[root@VM_0_6_centos tmp]#gzip -rc DCBreakfast>DCBreakfast.gz #压缩目录并保留源文件
[root@VM_0_6_centos tmp]# gunzip -r DCBreakfast.gz
gzip: DCBreakfast already exists; do you wish to overwrite (y or n)? y
gzip: DCBreakfast: Is a directory
[root@VM_0_6_centos tmp]# ll -d DCBreakfast
drwxr-xr-x 6 root root 4.0K May 11 20:26 DCBreakfast



    • gunzip压缩命令

      gunzip是gzip的硬链接
      • 选项
选项参数说明
-r解压目录
-c将解压后的文件输出到标准输出中,并保留源文件。
-f强制解压缩文件,不理会文件是否存在
-l对每一个压缩文件,显示以下字段:压缩文件的大小、未压缩文件的大小、压缩比、未压缩文件的名称
#把压缩的文件解压,进入到DCBreakfast目录下,发现gz格式文件解压并删除了
[root@VM_0_6_centos tmp]# gunzip -r DCBreakfast
#
[root@VM_0_6_centos tmp]# gunzip -l DCBreakfast/asgi.py.gz 
         compressed        uncompressed  ratio uncompressed_name
                304                 415  33.0% DCBreakfast/asgi.py

  • 2.4 bz2格式文件的压缩和解压

    • bzip2压缩命令

同 gzip 命令类似,只能对文件进行压缩(或解压缩),对于目录只能压缩(或解压缩)该目录及子目录下的所有文件

命令格式:bzip2 [选项] 压缩名 文件名或目录

选项参数说明
-d执行解压缩,此时该选项后的源文件应为标记有 .bz2 后缀的压缩包文件。
-kbzip2 在压缩或解压缩任务完成后,会删除原始文件,若要保留原始文件,可使用此选项。
-fbzip2 在压缩或解压缩时,,默认不会覆盖现有文件,若使用此选项,则会强制覆盖现有文件。
-v压缩或解压缩文件时,显示详细信息。
    • bunzip2解压

      bunzip2是bzip2的硬连接

命令格式:bunzip2 [选项] 源文件

选项参数说明
-kbzip2 在压缩或解压缩任务完成后,会删除原始文件,若要保留原始文件,可使用此选项。
-fbzip2 在压缩或解压缩时,,默认不会覆盖现有文件,若使用此选项,则会强制覆盖现有文件。
-L列出压缩文件内容

总结

-----------------------------------压缩常用命令
#归档、zip、gz、bz2格式文件的创建
tar -cvf 包名 文件名或目录 
zip -r 压缩名 文件名或目录 
tar -zcvf 压缩名 文件名或目录 
tar -jcvf 压缩名 文件名或目录 

# 解包解压
tar -xvf 包名
unzip -d 压缩名
tar -zxvf 压缩名
tar -jxvf 压缩名

# 查看包文件、压缩文件的信息
tar -t 
unzip -v 
gunzip -l
bunzip2 -L


---------------------------------以下是差异比较------------------------------------
#-r参数:
tar -r:追加文件到归档
zip -r:相当打包目录并压缩,否则会出现压缩的是空目录,子目录都没有压缩成功。
gzip -r:把目录下的文件进行压缩。建议压缩前先打包,或者执行 tar -
bzip2:没有-r参数,只可以压缩文件,所以

#操作文件到指定目录下:
tar -cf  #不支持打包文件到指定目录
zip #不支持
unzip -d 压缩名 目标目录	#解压文件到指定目录
gunzip  #不支持
bzip2 #不支持
bunzip2 #不支持


#查看文件信息:
tar -t 
unzip -v 
gunzip -l
bzip2 -L

#操作后删除源文件:
tar --remove-files:默认不删除,归档后删除源文件用这个参数
zip -m :默认不删除,压缩后删除源文件用这个参数
gzip 压缩后默认删除源文件,保留源文件请用-c参数
bzip2 压缩后默认删除源文件,保留源文件请用-k参数
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值