Ⅳ. 打包与压缩
0x00 zip 指令
为了方便讲解,我们先准备如下操作:
zip [压缩文件.zip] [目录或文件]
🔨 指令功能 :将目录或文件压缩成 zip 格式
📜 常用选项:
-r 递归处理,将指定目录下的所有文件和子目录一并处理。
💭 操作演示:
0x01 unzip 指令
❓ 那么如何解压呢?
unzip [目标] # 解压目标文件
💭 操作演示:我们可以使用 zip 指令对应的 unzip 指令对它进行解压操作:
此时我们 cd 到 tar_package 文件中,却发现什么都没有……
啊这,原来我们一开始就压了个寂寞,
只是把目录打包了,里面的 file 文件都没打包进去,相当于你只打包了个文件夹!
没错,我是故意这么做的。
这么做只是为了让大家有一个深刻的印象,什么呢?
📌 注意事项:直接 zip 目录,是打包不了目录里面的东西的!
正确做法是 —— 对于目录的打包,如果你想打包目录里的东西:
$ zip -r [压缩包名称] [压缩对象] # 递归压缩
💭 操作演示:使用 zip -r 去打包目录
搞定,现在 new_test.zip 没问题了,我们用 unzip 解压一下看看:
📌 注意事项:unzip 解压出来的原始数据,都会被放在当前路径下。
(默认情况下,几乎所有的解压工具都是这样,Windows 上常见的压缩软件好像都是这么做的)
而且也是可以选择解压路径的。
Linux 也可以,如果你想指定解压到指定目录下,可以在 unzip -d 后加上路径。
💭 操作演示:使用 unzip -d 指定解压到指定目录下
❓ 思考:我为什么要打包压缩?
① 节约空间,压缩一下可以节约空间。
② 我们下下来的软件是压缩包,曾经提供软件的人,上传的是压缩包。
所有的软件写好之后,不是只有一个文件的!所有的互联网公司后台都是 Linux 系统,开发人员开发的软件,将来都是要部署在 Linux 系统上的,所以所有的软件开发好之后都要打包压缩上载到 Linux 上,进行安装部署。所以 Linux 必须支持解包解压。
0x02 tar 指令
一般一个压缩包是需要有两个步骤的:① 打包 ② 压缩。
我们还要讲一种压缩方式,这种压缩方式也是 Linux 中最常见的一种 —— tar 指令。
tar [-cxtzjvf] 文件与目录 .... 参数
🔨 指令功能 :打包 / 解包(不打开它,直接看内容)
📜 常用选项:
-c 建立一个压缩文件的参数指令(create 的意思)。
-x 解开一个压缩文件的参数指令!
-t 查看 tarfile 里面的文件!
-z 是否同时具有 gzip 的属性?以及是否需要用 gzip 压缩?
-j 是否同时具有 bzip2 的属性?以及是否需要用 bzip2 压缩?
-v 压缩的过程中显示文件!这个常用,但不建议用在背景执行过程!
-f 使用档名,请留意,在 f 之后要立即接档名!不要再加参数!
-C 解压到指定目录。
💭 操作演示:打包 tar czf 和压缩 tar xzf 都可以用 tar 指令去完成:
💭 操作演示:tar zcvf 、tar xzvf 在压缩过程中显示文件
💭 操作演示:-C 选项,解压到指定目录下:
❓ 思考:
① 我们讲完了所有的压缩包了吗?没有!
② Linux 下是否几乎支持所有种类的压缩包?是的!
③ 为什么 Linux 下会支持?因为Linux 面对的平台非常多!
④ 遇到不懂的压缩包种类,该怎么办?test.XXX 网上搜索:centos .XXX 后缀如何解压!
【补充范例】
范例一:将整个 /etc 目录下的文件全部打包成为 `/tmp/etc.tar` [root@linux ~]# tar -cvf /tmp/etc.tar /etc<==仅打包,不压缩! [root@linux ~]# tar -zcvf /tmp/etc.tar.gz /etc <==打包后,以 gzip 压缩 [root@linux ~]# tar -jcvf /tmp/etc.tar.bz2 /etc <==打包后,以 bzip2 压缩 特别注意,在参数 f 之后的文件档名是自己取的,我们习惯上都用 .tar 来作为辨识。 如果加 z 参数,则以 .tar.gz 或 .tgz 来代表 gzip 压缩过的 tar file ~ 如果加 j 参数,则以 .tar.bz2 来作为附档名啊~ 上述指令在执行的时候,会显示一个警告讯息: 『`tar: Removing leading `/" from member names`』那是关於绝对路径的特殊设定。 范例二:查阅上述 /tmp/etc.tar.gz 文件内有哪些文件? [root@linux ~]# tar -ztvf /tmp/etc.tar.gz 由於我们使用 gzip 压缩,所以要查阅该 tar file 内的文件时,就得要加上 z 这个参数了!这很重要的! 范例三:将 /tmp/etc.tar.gz 文件解压缩在 /usr/local/src 底下 [root@linux ~]# cd /usr/local/src [root@linux src]# tar -zxvf /tmp/etc.tar.gz 在预设的情况下,我们可以将压缩档在任何地方解开的!以这个范例来说, 我先将工作目录变换到 /usr/local/src 底下,并且解开 /tmp/etc.tar.gz , 则解开的目录会在 /usr/local/src/etc 呢!另外,如果您进入 /usr/local/src/etc 则会发现,该目录下的文件属性与 /etc/ 可能会有所不同喔! 范例四:在 /tmp 底下,我只想要将 /tmp/etc.tar.gz 内的 etc/passwd 解开而已[root@linux ~]# cd /tmp [root@linux tmp]# tar -zxvf /tmp/etc.tar.gz etc/passwd 我可以透过 tar -ztvf 来查阅 tarfile 内的文件名称,如果单只要一个文件, 就可以透过这个方式来下达!注意到! etc.tar.gz 内的根目录 / 是被拿掉了! 范例五:将 /etc/ 内的所有文件备份下来,并且保存其权限! [root@linux ~]# tar -zxvpf /tmp/etc.tar.gz /etc 这个 -p 的属性是很重要的,尤其是当您要保留原本文件的属性时! 范例六:在 /home 当中,比 2005/06/01 新的文件才备份 [root@linux ~]# tar -N "2005/06/01" -zcvf home.tar.gz /home 范例七:我要备份 /home, /etc ,但不要 /home/dmtsai [root@linux ~]# tar --exclude /home/dmtsai -zcvf myfile.tar.gz /home/* /etc 范例八:将 /etc/ 打包后直接解开在 /tmp 底下,而不产生文件! [root@linux ~]# cd /tmp [root@linux tmp]# tar -cvf - /etc | tar -xvf - 这个动作有点像是 cp -r /etc /tmp 啦~依旧是有其有用途的! 要注意的地方在於输出档变成 - 而输入档也变成 - ,又有一个 | 存在~ 这分别代表 standard output, standard input 与管线命令啦!
Ⅴ. 其他常见指令
0x00 bc 命令
(Windows XP 自带的计算器)
Linux 下,我们可以用 bc 命令很方便地进行浮点运算:
echo " [计算内容] " | bc
0x01 uname -r 指令
不同的平台下对应的指针大小是不一样的,在 VS32 位下指针对应的大小是 4 个字节,
在64位下系统,我们的指针大小就是 8 字节。我们该怎么知道当前系统的体系结构信息呢?
我们可以用 uname -a 查看系统中的很多信息,如果只想看内核版本,可以输 uname -r:
uname [选项]
🔨 指令功能 :获取电脑和操作系统的相关信息
📃 指令介绍: uname 可显示 Liunx 主机所用的操作系统的版本、硬件的名称等基本信息。
📜 常用选项:-a 详细输出所有信息,依次为内核名称,主机名,内核版本号,内核版本,硬件名,处理器类 型,硬件平台类型,操作系统名称。
0x02 常用热键
什么是热键?热键即组合键,可以理解为经常使用的按键。
热键有什么用呢?比如下面这些情况。
💭 ctrl + C - 令当前程序暂停(可终止失控程序)
💭 tab - 命令的自动补齐
💭 Ctrl + r - 搜索历史命令
💭 Ctrl + d - 快速退出账户
0x03 关机
📌 注意事项:如果使用的是云服务器,云服务器是不需要关机的,永远不关机。
shutdown [选项] ** 常见选项: **
🔨 指令功能 :关机
📜 常用选项:
-h 将系统的服务停掉后,立即关机。
-r 在将系统的服务停掉之后就重新启动 -t sec :
-t 后面加秒数,为 "过几秒后关机" 的意思