1.压缩解压缩命令
tar命令
tar命令位于/bin目录下,它能够将用户所指定的文件或目录打包成一个文件,但不做压缩。 一般Linux上常用的压缩方式是选用tar将许多文件打包成一个文件,再以gzip压缩命令压缩成xxx.tar.gz(或称为xxx.tgz)的文件
常用参数
选项 | 功能 |
---|---|
-c | 创建一个新tar文件 |
-v | 显示运行过程的信息 |
-f | 指定文件名 |
-z | 调用gzip压缩命令进行压缩/解压缩 |
-t | 查看压缩文件的内容 |
-x | 解压tar文件 |
1.1 tar压缩打包
打包文件
tar –cvf xxx.tar 目录名/文件1 文件2
示例:
tar -cvf mycvfab.tar a.txt b.txt
打包并且压缩
tar –zcvf xxx.tar.gz 目录名/文件1 文件2示例:
tar -zcvf houma.tar.gz houge.txt bailongma.txt
1.2 tar解压
-
解压到当前目录
tar -zxvf houma.tar.gz
-
解压到指定目录
解压到usr目录下的aa目录中
tar -zxvf xxx.tar.gz -C /usr/aaa
1.3常见的便捷压缩方式
1.3.1压缩多个目录
如果你只想压缩多个目录,而不需要包括目录中的所有文件,你可以使用 `tar` 命令来将这些目录打包到一个归档文件中,然后再使用 `gzip` 命令进行压缩。以下是一个高效的方式:
tar -czvf archive.tar.gz directory1 directory2 directory3
这个命令将会创建一个名为 `archive.tar.gz` 的压缩包,其中包含了 `directory1`、`directory2` 和 `directory3` 这三个目录及其内容。
如果你想要压缩目录的内容(包括子目录和文件),可以使用 `-C` 选项:
tar -czvf archive.tar.gz -C /path/to/directory1 -C /path/to/directory2
这样会将 `directory1` 和 `directory2` 目录及其内容压缩到 `archive.tar.gz` 文件中。
另外,如果你想要在归档文件中保留目录结构(即在解压缩时保持目录层次结构),你可以使用相对路径:
tar -czvf archive.tar.gz -C /path/to/parent_directory directory1 directory2
这个命令将会在 `archive.tar.gz` 文件中保留 `directory1` 和 `directory2` 目录,其路径相对于 `/path/to/parent_directory`。
总之,`tar` 命令可以灵活地打包指定的目录或文件,可以根据需要调整命令参数来达到想要的压缩效果。
1.3.2压缩某个目录下的多个文件
如果你只想压缩某个目录下的多个文件,而不需要压缩整个目录及其子目录,你可以直接在 `tar` 命令中列出这些文件的路径。以下是一个示例:
tar -czvf archive.tar.gz /path/to/directory/file1.txt /path/to/directory/file2.txt /path/to/directory/file3.txt
这个命令将创建一个名为 `archive.tar.gz` 的压缩包,其中包含了 `/path/to/directory/` 目录下的 `file1.txt`、`file2.txt` 和 `file3.txt` 这三个文件。
1.3.3压缩文件夹命名有规律的
如果这些文件夹命名有规律,例如它们的命名遵循了某种模式,你可以使用通配符来选择匹配的文件。例如,如果你想要压缩以 `log` 开头的所有文件,你可以这样做:
tar -czvf archive.tar.gz /path/to/directory/log*.txt
这将压缩 `/path/to/directory/` 目录下所有以 `log` 开头并以 `.txt` 结尾的文件。
如果你的文件名有规律,但是无法通过通配符匹配,你可能需要编写一个脚本来生成要压缩的文件列表,然后将其传递给 `tar` 命令。例如,你可以使用 `find` 命令来查找符合特定条件的文件,并将其输出传递给 `tar` 命令:
find /path/to/directory/ -type f -name "pattern*" -exec tar -rvf archive.tar {} \;
这个命令将查找 `/path/to/directory/` 目录下所有以 `pattern` 开头的文件,并将它们添加到名为 `archive.tar` 的归档文件中。
举例:
如果想要压缩某个月份的日志如下:
tar -zcvf txService.log.2024-04.16-31.tar.gz txService.log.2024-03-{16..31}
这个命令是使用 tar
命令将一组特定的日志文件压缩为一个压缩包,并使用 gzip
进行压缩。让我们分解一下这个命令的各个部分:
-
tar
: 这个命令用于创建和解压缩归档文件(也称为 "tarballs")。它可以将多个文件和目录组合成一个归档文件。 -
-z
: 使用gzip
压缩归档文件。这意味着生成的文件会被压缩,通常扩展名为.tar.gz
。 -
-c
: 创建一个新的归档文件。 -
-v
: 可选参数,表示显示详细信息。在处理归档文件时,这个选项会输出处理的文件名。 -
-f
: 指定输出文件名。 -
txService.log.2024-04.16-31.tar.gz
: 这是生成的压缩包的文件名。在这个例子中,压缩包的名称暗示它包含了从2024年4月16日到31日之间的日志。 -
txService.log.2024-03-{16..31}
: 这是你要添加到压缩包中的文件。大括号{16..31}
是一个 "Brace Expansion" 语法,它会生成一系列字符串,在这个例子中是从16到31之间的数字。这意味着这个命令会尝试添加与txService.log.2024-03-16
,txService.log.2024-03-17
,...,txService.log.2024-03-31
这些文件名匹配的文件。
所以,整个命令的作用是将一组在2024年3月16日至31日之间的 txService.log
文件压缩到一个名为 txService.log.2024-04.16-31.tar.gz
的压缩包中,并且使用 gzip
压缩。