文件合并和打包压缩
1. 文件合并和覆盖
cat 命令可以打开文件,使用 cat 命令可以将几个文件合并成一个文件:
> # 覆盖,前面的文件内容会覆盖后一个文件的内容
>> # 在末尾追加
文件合并:
cat a.txt b.txt > c.txt # 合并(同时打开两个文件),将合并后的内容覆盖到 c.txt中
示例 1:
cat a.txt > b.txt # 左边的文件内容覆盖右边的文件内容,若右边文件不存在,则新建
echo 'hello' > b.txt # 与上效果一样
示例 2:
命令输出结果也可以覆盖(添加)到文件中,常用于记录日志:
ll > b.txt # 命令输出结果覆盖到右边文件中
wc -l a.txt # 显示文件行数
cat a.txt | wc -l # 管道符(上一个命令的结果作用于后一个命令)
2. 归档文件和压缩文件
归档(archiving)就是讲许多文件(或目录)打包成一个文件,其目的是为了方便备份、还原以及文件的传输操作。
2.1 tar 命令
tar 命令常用于打包、查看解包文件以及解包
语法:
tar [] 打包文件名 源文件
选项:
- -c:打包(创建一个新的 tar 文件)
- -v:显示过程(verbose)
- -f:指定打包后的文件名
- -t:列出 tar 文件中目录的内容
- -x:从 tar 文件中抽取文件(及解包)
- -z:使用 gzip 压缩算法来压缩打包后的文件
- -j:使用 bzip2 压缩算法来压缩打包后的文件
2.1.1 打包
tar -cvf test.tar a.txt b.txt c.txt # 将 a.txt、b.txt、c.txt打包成 test.tar
2.1.2 查看打包文件
tar -tf test.tar # 查看归档文件
2.1.3 解包
tar -xvf test.tar # 解包
tar -xvf test.tar -C /tmp # 解包到 /tmp 目录下
2.2 压缩
压缩就是将一个大的文件通过一些压缩算法变成一个小文件,其目的是为了缩小文件大小,节省存储文件的磁盘或磁带的空间,在网络传输时也会减少网络的流量。
2.2.1 gzip 和 gunzip 命令
gzip 命令用于压缩,gunzip 用于解压缩
语法:
gzip 参数
gunzip 参数
gzip 1.txt
gunzip 1.txt.gz
2.2.2 bzip2 和 bunzip2 命令
bzip2 用于压缩,bunzip2 用于解压缩
语法:
bzip2 参数
bunzip2 参数
bzip2 1.txt
bunzip2 1.txt.bz2
2.3 打包与压缩
打包和压缩可以连接在一起,tar 命令中 z 选项表示使用 gzip 压缩算法来压缩打包后的文件,j 选项表示使用 bzip2 压缩算法来压缩打包后的文件。
2.3.1 压缩打包后的文件
# 压缩打包后的文件为 .gz 格式的压缩包
tar -czvf test.tar.gz a.txt b.txt c.txt # 打包并压缩成 gz 格式的压缩包
tar -tf test.tar.gz # 查看
tar -xvf test.tar.gz # 解包(解包不需要指定 z)
tar -cjvf test.tar.bz2 a.txt b.txt
2.3.2 打包目录下所有文件
# 打包某个目录下的所有文件。而非目录
cd test
tar cvzf test2.tar.gz *
tar: 从成员名中删除开头的 “/”
[root@hj tmp]# cd test # 切换到 test 目录下
[root@hj test]# tar -czf test.tar.gz * # 将test 目录下的全部文件打包并解压成名为 test.tar.gz 文件
[root@hj test]# ls
1.txt 2.txt 3.txt a.pass b.pass c.pass test.tar test.tar.gz
[root@hj test]# tar -xvf test.tar.gz -C /tmp/test2 # 解压缩到 test2 中
[root@hj test]# ls /tmp/test2
1.txt 2.txt 3.txt a.pass b.pass c.pass test.tar