前提:公司日志文件每天产生几十G又不能删,而且要保存半年;那就只能压缩,但文件是每天一加的,那就只能在压缩文件中添加/更新文件?

目录

1.tar包解决的问题

2.Linux zip命令 语法

zip命令 示例

3.指定添加删除释放


1.tar包解决的问题

Linux系统下tar命令参数详解:

-c :建立一个压缩文件的参数指令(create 的意思);

-x :解开一个压缩文件的参数指令;

-t :查看 tarfile 里面的文件;

-z :是否同时具有 gzip 的属性?亦即是否需要用 gzip 压缩;

-j :是否同时具有 bzip2 的属性?亦即是否需要用 bzip2 压缩;

-v :压缩的过程中显示文件!这个常用,但不建议用在背景执行过程;

-f :使用档名,请留意,在 f 之后要立即接档名,不要再加参数;

-p :使用原文件的原来属性(属性不会依据使用者而变);

-N :比后面接的日期(yyyy/mm/dd)还要新的才会被打包进新建的文件中;

--exclude FILE:在压缩的过程中,不要将 FILE 打包。

Linux系统下操作tar压缩包,需要用tar命令,追加参数用“-r"选项,取出参数用“-x”选项,案例如下:

如果有一个包 a.tar.gz ,需要把b.txt追加进去,就用命令:

tar -rvf a.tar.gz b.txt

从tar包zhidao.tar.bz2中取出file2.txt则用:

tar  -xvf  a.tar.gz b.txt

#tar -xvf a.tar.gz ,后面不跟文件名,就会解压整个zhidao.tar.bz2包。

 注:该追加参数必须是 “ -cvf ” ,才能用-rvf参数才生效;

否则报错如下:

~]# tar -rcf a.tar.gz b.txt 
tar: You may not specify more than one `-Acdtrux' or `--test-label' option
Try `tar --help' or `tar --usage' for more information.

~]# tar -rzcf a.tar.gz b.txt 
tar: You may not specify more than one `-Acdtrux' or `--test-label' option
Try `tar --help' or `tar --usage' for more information.

~]# tar -zrcf a.tar.gz b.txt 
tar: You may not specify more than one `-Acdtrux' or `--test-label' option
Try `tar --help' or `tar --usage' for more information.

# 如果用这种方法相当与覆盖压缩了
~]# tar -zcvf a.tar.gz b.txt 
b.txt

注:该方法不能达到要求,我发现他只是归档,而不压缩,如果使用如下类似的方法,则意义不大;

gunzip archive.tar.gz     #解压
tar rf archive.tar data/data/com.myapp.backup/./files/settings.txt  #归档
gzip archive.tar          #再压缩

既然tar不行,那就用其他压缩命令

压缩命令大全:Linux tar命令|极客笔记https://deepinout.com/linux-cmd/linux-archiving-and-compression-related-cmd/

2.Linux zip命令 语法

zip [选项] [压缩文件]
 # 使用unzip命令可以解压缩zip文件。

命令中各选项的含义如下表所示。 

zip命令选项含义

  • -A 调整可执行的自动解压缩文件。
  • -b<工作目录> 指定暂时存放文件的目录。
  • -c 替每个被压缩的文件加上注释。
  • -d 从压缩文件内删除指定的文件。
  • -D 压缩文件内不建立目录名称。
  • -f 更新现有的文件。
  • -F 尝试修复已损坏的压缩文件。
  • -g 将文件压缩后附加在既有的压缩文件之后,而非另行建立新的压缩文件。
  • -h 在线帮助。
  • -i<范本样式> 只压缩符合条件的文件。
  • -j 只保存文件名称及其内容,而不存放任何目录名称。
  • -J 删除压缩文件前面不必要的数据。
  • -k 使用MS-DOS兼容格式的文件名称。
  • -l 压缩文件时,把LF字符置换成LF+CR字符。
  • -ll 压缩文件时,把LF+CR字符置换成LF字符。
  • -L 显示版权信息。
  • -m 将文件压缩并加入压缩文件后,删除原始文件,即把文件移到压缩文件中。
  • -n<字尾字符串> 不压缩具有特定字尾字符串的文件。
  • -o 以压缩文件内拥有最新更改时间的文件为准,将压缩文件的更改时间设成和该文件相同。
  • -q 不显示指令执行过程。
  • -r 递归处理,将指定目录下的所有文件和子目录一并处理。
  • -S 包含系统和隐藏文件。
  • -t<日期时间> 把压缩文件的日期设成指定的日期。
  • -T 检查备份文件内的每个文件是否正确无误。
  • -u 与 -f 参数类似,但是除了更新现有的文件外,也会将压缩文件中的其他文件解压缩到目录中。
  • -v 显示指令执行过程或显示版本信息。
  • -V 保存VMS操作系统的文件属性。
  • -w 在文件名称里假如版本编号,本参数仅在VMS操作系统下有效。
  • -x<范本样式> 压缩时排除符合条件的文件。
  • -X 不保存额外的文件属性。
  • -y 直接保存符号连接,而非该连接所指向的文件,本参数仅在UNIX之类的系统下有效。
  • -z 替压缩文件加上注释。
  • -$ 保存第一个被压缩文件所在磁盘的卷册名称。
  • -<压缩效率> 压缩效率是一个介于1-9的数值。

zip命令 示例

将/root/a.txt文件压缩成/root/a.zip文件

~]# zip /root/a.zip /root/a.txt
adding: /root/a (stored 0%)

将/root/a文件压缩成/root/a.zip文件,并指定加密密码

~]# zip -e /root/a.zip /root/a.txt
Enter password:             //在这里输入压缩加密密码
Verify password:            //再一次输入压缩加密密码
 adding: root/a (stored 0%)

测试压缩文件/root/a.zip的完整性

~]# zip -T /root/a.zip
test of /root/a.zip OK

将/root/a.txt文件压缩成/root/a.zip文件,并且添加一行注释

~]# zip -c /root/a.zip /root/a.txt
 adding: root/a (stored 0%)
Enter comment for root/a:
zip file                 //在这里添加注释信息

更新/root/a.zip压缩文件,添加/root/b.txt文件

[root@rhel ~]# zip -u /root/a.zip /root/b
adding: root/b (stored 0%)

压缩/root/a文件,生成的压缩文件设置成和/root/a文件一样的时间

[root@rhel ~]# zip -o /root/a.zip /root/a.txt
adding: root/a (stored 0%)

将/home目录压缩成/root/home.zip文件

~]# zip -r /root/home.zip /home

压缩/boot目录,但是排除/boot/grub/grub.conf文件

~]# zip -r /root/boot.zip /boot -x /boot/grub/grub.conf
adding: boot/ (stored 0%)
adding: boot/config-2.6.32-358.el6.x86_64 (deflated 75%)
adding: boot/vmlinuz-2.6.32-358.el6.x86_64 (deflated 1%)
adding: boot/lost+found/ (stored 0%)
adding: boot/.vmlinuz-2.6.32-358.el6.x86_64.hmac (deflated 22%)
adding: boot/System.map-2.6.32-358.el6.x86_64 (deflated 79%)
adding: boot/efi/ (stored 0%)
adding: boot/efi/EFI/ (stored 0%)
adding: boot/efi/EFI/redhat/ (stored 0%)
adding: boot/efi/EFI/redhat/grub.efi (deflated 60%)
adding: boot/initramfs-2.6.32-358.el6.x86_64.img (deflated 1%)
adding: boot/symvers-2.6.32-358.el6.x86_64.gz (deflated 0%)
adding: boot/grub/ (stored 0%)
adding: boot/grub/splash.xpm.gz (deflated 88%)
adding: boot/grub/fat_stage1_5 (deflated 38%)
adding: boot/grub/ffs_stage1_5 (deflated 39%)
adding: boot/grub/stage1 (deflated 17%)
adding: boot/grub/iso9660_stage1_5 (deflated 38%)
adding: boot/grub/e2fs_stage1_5 (deflated 40%)
adding: boot/grub/jfs_stage1_5 (deflated 40%)
adding: boot/grub/device.map (deflated 5%)
adding: boot/grub/stage2 (deflated 45%)
adding: boot/grub/ufs2_stage1_5 (deflated 39%)
adding: boot/grub/vstafs_stage1_5 (deflated 39%)
adding: boot/grub/reiserfs_stage1_5 (deflated 40%)
adding: boot/grub/minix_stage1_5 (deflated 40%)
adding: boot/grub/menu.lst (deflated 36%)
adding: boot/grub/xfs_stage1_5 (deflated 39%)
查看压缩包但不解压
~]# unzip -v a.zip
Archive:  a.zip
 Length   Method    Size  Cmpr    Date    Time   CRC-32   Name
--------  ------  ------- ---- ---------- ----- --------  ----
151005959  Defl:N 14387536  91% 12-02-2021 17:10 000983ad  a.txt
127489195  Defl:N 11942580  91% 12-02-2021 17:13 5bb5d63f  b.txt
--------          -------  ---                            -------
278495154         26330116  91%                            2 files

测试文件内的文件是否正常

~]# unzip -t a.zip
Archive:  a.zip
    testing: a.txt                    OK
    testing: b.txt                    OK
No errors detected in compressed data of a.zip.

在压缩文件中删除指定文件

~]# zip a.zip -d b.txt
deleting: b.txt

~]# unzip -v a.zip 
Archive:  a.zip
 Length   Method    Size  Cmpr    Date    Time   CRC-32   Name
--------  ------  ------- ---- ---------- ----- --------  ----
151005959  Defl:N 14387536  91% 12-02-2021 17:10 000983ad  a.txt
--------          -------  ---                            -------
151005959         14387536  91%                            1 file

指定解压路经

~]$ unzip -d /root a.zip
Archive:  a.zip
  inflating: /root/a.txt             

~]# ls
a.txt

3.指定添加删除释放

最后关键就是我们此次的需求

#指追添加
~]# zip -g a.zip b.txt 
  adding: b.txt (deflated 91%)

~]# unzip -v a.zip 
Archive:  a.zip
 Length   Method    Size  Cmpr    Date    Time   CRC-32   Name
--------  ------  ------- ---- ---------- ----- --------  ----
151005959  Defl:N 14387536  91% 12-02-2021 17:10 000983ad  a.txt
127489195  Defl:N 11942580  91% 12-02-2021 17:13 5bb5d63f  b.txt
--------          -------  ---                            -------
278495154         26330116  91%    

#指定删除
~]# zip a.zip -d b.txt
deleting: b.txt

~]# unzip -v a.zip 
Archive:  a.zip
 Length   Method    Size  Cmpr    Date    Time   CRC-32   Name
--------  ------  ------- ---- ---------- ----- --------  ----
151005959  Defl:N 14387536  91% 12-02-2021 17:10 000983ad  a.txt
--------          -------  ---                            -------
151005959         14387536  91%                            1 file


#指定解压
~]# unzip -d /root a.zip b.txt
Archive:  a.zip
  inflating: /root/b.txt             

~]# ls /root
b.txt
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐