|
| 1 | +--- |
| 2 | +title:Linux文件压缩 |
| 3 | +date:2020-02-24 21:43:47 |
| 4 | +categories: |
| 5 | +tags: |
| 6 | +--- |
| 7 | +文件压缩是Linux环境下非常常见的操作,我们可以通过一个常用的常见来熟悉相关命令。 |
| 8 | + |
| 9 | +####查看文件 |
| 10 | +```linux |
| 11 | +[root@localhost ~]# ll -hS /etc/* | head -n 3 |
| 12 | +// -h: 显示默认单位 |
| 13 | +// -S: 按照大小排序 |
| 14 | +// -n: 从头显示前3行 |
| 15 | +-rw-r--r--. 1 root root 655K Jun 7 2013 /etc/services |
| 16 | +-rw-r--r--. 1 root root 25K Aug 5 2015 /etc/dnsmasq.conf |
| 17 | +-rw-r--r--. 1 root root 19K Mar 31 07:47 /etc/ld.so.cache |
| 18 | +``` |
| 19 | + |
| 20 | +####拷贝文件 |
| 21 | +```linux |
| 22 | +[root@localhost ~]# ll /home/user1 |
| 23 | +total 0 |
| 24 | +-rw-rw-r--. 1 user1 user1 0 Apr 18 09:00 a |
| 25 | +[root@localhost ~]# cp -ai /etc/services /home/user1/services.cp |
| 26 | +- a 保留链接和文件属性,递归拷贝目录,相当于下面的d、p、r三个选项组合。 |
| 27 | +- d 拷贝时保留链接。 |
| 28 | +- f 删除已经存在目标文件而不提示。 |
| 29 | +- i 覆盖目标文件前将给出确认提示,属交互式拷贝。 |
| 30 | +- p 复制源文件内容后,还将把其修改时间和访问权限也复制到新文件中。 |
| 31 | +- r 若源文件是一目录文件,此时cp将递归复制该目录下所有的子目录和文件 |
| 32 | +[root@localhost ~]# ll /home/user1/ |
| 33 | +// total后面的数字是指当前目录下所有文件所占用的空间总和 |
| 34 | +total 656 |
| 35 | +-rw-rw-r--. 1 user1 user1 0 Apr 18 09:00 a |
| 36 | +-rw-r--r--. 1 root root 670293 Jun 7 2013 services.cp |
| 37 | +``` |
| 38 | + |
| 39 | +####打包与压缩 |
| 40 | +首先要弄清两个概念:打包和压缩。 |
| 41 | + |
| 42 | +打包是指将一大堆文件或目录变成一个总的文件; |
| 43 | + |
| 44 | +压缩则是将一个大的文件通过一些压缩算法变成一个小文件。 |
| 45 | + |
| 46 | +为什么要区分这两个概念呢?这源于Linux中很多压缩程序只能针对一个文件进行压缩,这样当你想要压缩一大堆文件时,你得先将这一大堆文件先打成一个包(tar命令),然后再用压缩程序进行压缩(gzip bzip2命令)。 |
| 47 | + |
| 48 | +######准备拷贝文件 |
| 49 | +```linux |
| 50 | +// 拷贝两份文件 |
| 51 | +[root@localhost user1]# cp services.cp services.cp01 |
| 52 | +[root@localhost user1]# cp services.cp services.cp02 |
| 53 | +``` |
| 54 | + |
| 55 | +######打包压缩 |
| 56 | +```linux |
| 57 | +// 打包 |
| 58 | +[root@localhost user1]# tar -cvf 1.tar services.cp services.cp01 services.cp02 |
| 59 | +
|
| 60 | +// 打包与压缩 |
| 61 | +[root@localhost user1]# tar -zcvf 1.tar.gz services.cp services.cp01 |
| 62 | +// 打包与压缩 |
| 63 | +[root@localhost user1]# tar -jcvf 1.tar.bz2 services.cp services.cp02 |
| 64 | +选项与参数: |
| 65 | +-c :创建打包文件,可搭配 -v 来察看过程中被打包的文件名(filename) |
| 66 | +-t :察看打包文件的内容含有哪些文件名,重点在察看“文件名”就是了; |
| 67 | +-x :解打包或解压缩的功能,可以搭配 -C (大写) 在特定目录解开 |
| 68 | +特别留意的是, -c, -t, -x 不可同时出现在一串命令行中。 |
| 69 | +-z :通过 gzip 的支持进行压缩/解压缩:此时文件名最好为 *.tar.gz |
| 70 | +-j :通过 bzip2 的支持进行压缩/解压缩:此时文件名最好为 *.tar.bz2 |
| 71 | +-v :在压缩/解压缩的过程中,将正在处理的文件名显示出来! |
| 72 | +-f filename:-f 后面要立刻接要被处理的文件名!建议 -f 单独写一个选项啰! |
| 73 | +-C 目录 :这个选项用在解压缩,若要在特定目录解压缩,可以使用这个选项。 |
| 74 | +
|
| 75 | +-p(小写) :保留备份数据的原本权限与属性,常用于备份(-c)重要的配置文件 |
| 76 | +-P(大写) :保留绝对路径,亦即允许备份数据中含有根目录存在之意; |
| 77 | +--exclude=FILE:在压缩的过程中,不要将 FILE 打包! |
| 78 | +``` |
| 79 | + |
| 80 | +######查看打包效果 |
| 81 | +```linux |
| 82 | +// 查看打包与压缩效果 |
| 83 | +[root@localhost user1]# ll -hS |
| 84 | +total 84K |
| 85 | +-rw-r--r--. 1 root root 40K Apr 24 10:35 1.tar |
| 86 | +-rw-r--r--. 1 root root 10K Apr 24 10:07 services.cp |
| 87 | +-rw-r--r--. 1 root root 10K Apr 24 10:34 services.cp01 |
| 88 | +-rw-r--r--. 1 root root 10K Apr 24 10:34 services.cp02 |
| 89 | +-rw-r--r--. 1 root root 161 Apr 24 10:38 1.tar.gz |
| 90 | +-rw-r--r--. 1 root root 148 Apr 24 10:38 1.tar.bz2 |
| 91 | +``` |
| 92 | + |
| 93 | +######查看打包后包含文件 |
| 94 | +```linux |
| 95 | +[root@localhost user1]# tar -tvf 1.tar |
| 96 | +-rw-r--r-- root/root 10240 2019-04-24 10:07 services.cp |
| 97 | +-rw-r--r-- root/root 10240 2019-04-24 10:34 services.cp01 |
| 98 | +-rw-r--r-- root/root 10240 2019-04-24 10:34 services.cp02 |
| 99 | +
|
| 100 | +[root@localhost user1]# tar -tvf 1.tar.gz |
| 101 | +-rw-r--r-- root/root 10240 2019-04-24 10:07 services.cp |
| 102 | +-rw-r--r-- root/root 10240 2019-04-24 10:34 services.cp01 |
| 103 | +
|
| 104 | +[root@localhost user1]# tar -tvf 1.tar.bz2 |
| 105 | +-rw-r--r-- root/root 10240 2019-04-24 10:07 services.cp |
| 106 | +-rw-r--r-- root/root 10240 2019-04-24 10:34 services.cp02 |
| 107 | +``` |
| 108 | + |
| 109 | +####解压 |
| 110 | + |
| 111 | +######解压打包文件 |
| 112 | +```linux |
| 113 | +[root@localhost user1]# mkdir untar |
| 114 | +[root@localhost user1]# tar -xvf 1.tar -C ./untar/ |
| 115 | +services.cp |
| 116 | +services.cp01 |
| 117 | +services.cp02 |
| 118 | +[root@localhost user1]# ll ./untar/ |
| 119 | +total 36 |
| 120 | +-rw-r--r--. 1 root root 10240 Apr 24 10:07 services.cp |
| 121 | +-rw-r--r--. 1 root root 10240 Apr 24 10:34 services.cp01 |
| 122 | +-rw-r--r--. 1 root root 10240 Apr 24 10:34 services.cp02 |
| 123 | +``` |
| 124 | + |
| 125 | +######解压压缩文件 |
| 126 | +```linux |
| 127 | +[root@localhost user1]# mkdir untar.gz |
| 128 | +[root@localhost user1]# tar -xvf 1.tar.gz -C ./untar.gz/ |
| 129 | +// 也可以加上压缩类型 -zxvf , -jxvf |
| 130 | +services.cp |
| 131 | +services.cp01 |
| 132 | +[root@localhost user1]# ll ./untar.gz/ |
| 133 | +total 24 |
| 134 | +-rw-r--r--. 1 root root 10240 Apr 24 10:07 services.cp |
| 135 | +-rw-r--r--. 1 root root 10240 Apr 24 10:34 services.cp01 |
| 136 | +``` |
| 137 | + |
| 138 | +######解压部分文件 |
| 139 | +```linux |
| 140 | +[root@localhost user1]# mkdir untar.bz2 |
| 141 | +[root@localhost user1]# tar -jxvf 1.tar.bz2 services.cp02 -C ./untar.bz2/ |
| 142 | +services.cp02 |
| 143 | +[root@localhost user1]# ll ./untar.bz2/ |
| 144 | +total 0 ???为什么没有解压过来? |
| 145 | +``` |
| 146 | + |