欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

马哥 09_04 _Linux压缩及归档 有大用

image.png


image.png

# mkdir /var/swaptemp

# dd if=/dev/zero of=/var/swaptemp/swapfile bs=1M count=512

# mkswap LABEL=SWAP-FILE /var/swaptemp/swapfile


image.png

# /etc/fstab

# LABEL='MYDATA' /data ext3 defaults,acl 0 0


压缩,解压缩命令

压缩格式: gz,bz2,xz,zip, Z


adc(1)de(2)         12

压缩算法: 算法不同,压缩比也会不同:

压缩比:(压缩前的大小-压缩后的大小)/压缩前的大小


compress: FILENAME.Z  (compress 压缩)

uncompress:


gzip:     .gz   对文本文件压缩比大,压缩时会删除源文件(解压缩时会删除压缩文件)(可以不删,或压缩后重定向不用删除),不能压缩目录,指向目录时,会单独压缩目录里的每一个文件

    gzip /PATH/TO/SOMEFILE    不能压缩目录, (可以多个文件,每个文件单独压缩)

            -d: 表示解压缩 (相当于 gunzip) ( -d --decompress --uncompress   Decompress 解压缩 )

            -#:  1-9,指定压缩比,默认是 6 (压缩比小的话,速度快,完成后文件大)

            -k: 保留源文件 (解压缩时也是保留源文件)(gzip 应该没有-k)



gunzip:

    gunzip /PATH/TO/SOME_COMPRESS_FILE.gz  解压完成后会删除压缩文件


zcat /PATH/TO/SOMEFILE.gz (不解压的情况下,查看文本文件的内容)解压一个临时文件查看,关闭后,文件还是压缩的





bzip2:     .bz2

比 gzip 有着更大的压缩比的压缩工具 (对大文件比gzip 优势明显得多,小文件可能还不如gzip)

使用格式近似

bzip2 /PATH/TO/SOMEFILE  不能压缩目录  压缩时会删除源文件(解压缩时会删除压缩文件)

        -d: 表示解压缩  

        -#:   1-9,指定压缩比,默认是 6 (压缩比小的话,速度快,完成后文件大)      

        -k: 保留源文件 (解压缩时也是保留源文件)


bunzip2 /PATH/TO/SOME_COMPRESS_FILE.bz2    解压缩命令

bzcat /PATH/TO/SOMEFILE.bz2    (不解压的情况下,查看文本文件的内容)解压一个临时文件查看,关闭后,文件还是压缩的


https://www.kernel.org/

https://mirrors.edge.kernel.org/pub/

https://mirrors.edge.kernel.org/pub/linux/

https://mirrors.edge.kernel.org/pub/linux/kernel/v3.0/

image.png





xz:     .xz   (主流.较新,压缩比更大,速度稍慢一点)

        xz      /PATH/TO/SOMEFILE  不能压缩目录  压缩时会删除源文件(解压缩时会删除压缩文件) (压缩比 比 gzip bzip2更大)

        -d: 表示解压缩  

        -#:   1-9,指定压缩比,默认是 6 (压缩比小的话,速度快,完成后文件大)      

        -k: 保留源文件 (解压缩时也是保留源文件) 

    

    unxz   /PATH/TO/SOME_COMPRESS_FILE.xz 解压缩命令

    xzcat  /PATH/TO/SOMEFILE.xz (不解压的情况下,查看文本文件的内容)解压一个临时文件查看,关闭后,文件还是压缩的

    (xzdec 与 xzcat  一样)

    xzdec (dec是 decompress 的简写 一般用不到,因为我们 已经有了unxz (或 xz -d)),只是万一别人用了,我们知道了解就行了



zip: 可以压缩一个目录  (既归档又压缩的工具) (压缩比小)

    zip FILENAME.zip FILE1 FILE2 ...:压缩后不删除源文件

    unzip FILENAME.zip

    


archive:归档,归档本身并不意味道压缩 (zip 既能归档,又能压缩)



tar :  归档工具   .tar    只归档,不压缩         我经常用 czvf (压缩归档) cxvf (解档,解压缩) (v表示可以看到解压或压缩的过程(详细信息))

    tar 这个命令选项中短横线(杠)-是可以省略的  

    tar jcf /tmp/users.tar.bz2 /users/inittab 备份的时候会把 (/users/这个路径备份过来的)

     tar xf /tmp/users.tar.bz2 -C ./  (-C表示解压到某个目录下)(

-C, --directory DIR

              change to directory DIR

)


(tar在当前目录下压缩 比如  tar zcvf aaa.tar.gz aaa.txt 然后解压的时候就不会包含路径了,只看到aaa.txt

否则 假如   tar zcvf aaa.tar.gz /root/bbb/aaa.txt 解压的时候,会包含路径 .即 root/bbb/aaa.txt (当然不包含第一个斜杠)

)


    -c :创建归档文件

    -f FILE.tar:操作的归档文件  (-f 必须放在后面,因为要带参数)

    -x:展开归档(还原归档)(解档)

    --xattrs:归档时,保留文件的扩展属性信息(文件的扩展属性,acl存储文件扩展属性) 作备份时很关键

    -t:不展开归档,直接查看归档了哪些文件


    -zcf: 既归档,又压缩        归档并调用gzip压缩      创建的时候-z不能省

    -zxf: 先解缩,后展开归档    调用gzip解压缩并展开归档      -z选项可省略


    

    -jcf: 既归档,又压缩        归档并调用bzip2压缩         创建的时候-j不能省

    -jxf: 先解缩,后展开归档    调用bzip2解压缩并展开归档      -j选项可省略


    (这里-J好像红帽5不支持,红帽6支持)

    -Jcf: 既归档,又压缩        归档并调用xz压缩                 创建的时候-J不能省

    -Jxf: 先解缩,后展开归档    调用xz解压缩并展开归档         -J选项可省略



cpio: 归档工具(与tar 功能差不多,更老) (红帽上cpio有些地方比tar能力更强,更适合)


练习:写一个脚本

从键盘让用户输入几个文件,脚本能够将此几个文件归档压缩成一个文件:

read  (是bashshell 的内部命令)  把用户输入赋值给变量

    -p "prompt" : 给出提示

    -t # :等待多少秒,如果用户不输入的话 就自动往下执行



脚本编程

    顺序结构

    选择结构

            if

            case

    循环结构

            for        (循环次数已知)

            while      (循环次数未知)

            until


while循环:适用于循环次数未知的场景,要有退出条件

语法:

        while CONDITION; do

                statement

                ...

         done



计算100以内所有正整数的和



提醒用户输字符串,自动变成大写,如果用户输的是 quit,则退出循环

while [ $STRING != 'quit' ]; do



done






xz,bz2,gz








归档

--xattrs

文件系统类型:

    ext2

    ext3


cat /proc/filesystems:查看当前内核所支持文件系统类型


任务计划

mail

cron

at

batch






[root@ebs-22618 ~]# cp /var/log/messages ./

[root@ebs-22618 ~]# ls -la messages

-rw------- 1 root root 5561536 7月  28 08:53 messages

[root@ebs-22618 ~]# gzip messages

[root@ebs-22618 ~]# ls -l


image.png


[root@ebs-22618 ~]# ls -lh /var/log/messages

-rw------- 1 root root 5.4M 7月  28 08:51 /var/log/messages

[root@ebs-22618 ~]# ls -lh messages.gz

-rw------- 1 root root 447K 7月  28 08:53 messages.gz


[root@ebs-22618 ~]# gunzip messages.gz

[root@ebs-22618 ~]# ls -la

image.png





[root@ebs-22618 ~]# gzip messages

[root@ebs-22618 ~]# ls -la

image.png


[root@ebs-22618 ~]# gzip -d messages.gz

[root@ebs-22618 ~]# ls -la

image.png



[root@ebs-22618 ~]# gzip -9 messages

[root@ebs-22618 ~]# ls -lh

image.png

[root@ebs-22618 ~]# zcat messages.gz

[root@ebs-22618 ~]# ls -lh

image.png



[root@ebs-22618 ~]# ls

image.png

[root@ebs-22618 ~]# gzip -d messages.gz

[root@ebs-22618 ~]# ls

image.png


[root@ebs-22618 ~]# bzip2 messages

[root@ebs-22618 ~]# ls -la

image.png

[root@ebs-22618 ~]# bzip2 -d messages.bz2

[root@ebs-22618 ~]# ls -lh


image.png




[root@ebs-22618 ~]# man bzip2

image.png




[root@ebs-22618 ~]# bzip2 -k messages

[root@ebs-22618 ~]# ls -lh

image.png



[root@ebs-22618 ~]# mv messages messages.bak

[root@ebs-22618 ~]# bunzip2 messages.bz2

[root@ebs-22618 ~]# ls -lh

image.png



[root@ebs-22618 ~]# bzip2 messages

[root@ebs-22618 ~]# bzcat messages.bz2

image.png

# yun install xz  (假如xz 没有安装的话)


安装前

[root@ebs-22618 ~]# cd /etc/yum.repos.d

[root@ebs-22618 yum.repos.d]# ls -lh

image.png

看有没有 server.repo  (如果没有的话 可以使用 wget 下载)

[root@ebs-22618 yum.repos.d]# wget ftp://172.16.0.1/pub/gls/server.repo  (这个yum 源好像不行)

image.png

image.png

image.png

image.png

把 instructor.example.com 改成 172.16.0.1 是防止 dns 解析不成功,导致命令无法执行

image.png



# yun install xz  (假如xz 没有安装的话) (安装过程中 敲y确认安装)


[root@ebs-22618 ~]# man xz

image.png

[root@ebs-22618 ~]# ls -lh

总用量 6.1M

-rwxr-xr-x 1 root root   30K 5月  15 2017 centos

drwxrwxrwx 6 www  www   4.0K 7月   6 09:01 inotify-tools-3.14

-rw-r--r-- 1 root root  351K 3月  14 2010 inotify-tools-3.14.tar.gz

-rwx------ 1 root root  1.1K 1月  10 2006 install.sh

-rw------- 1 root root  5.4M 7月  28 08:53 messages.bak

-rw------- 1 root root  291K 7月  28 08:53 messages.bz2

crw-r--r-- 1 root root 66, 0 7月  15 08:55 mydev

crw-r----- 1 root root 66, 1 7月  15 08:57 mydev2

crw-r--r-- 1 root root 66, 3 7月  18 00:53 mydev3

drwxr-xr-x 3 root root  4.0K 7月  17 06:02 testdisk-7.1

-rw-r--r-- 1 root root  113K 7月  24 02:43 test.txt

[root@ebs-22618 ~]# bzip2 -d messages.bz2

[root@ebs-22618 ~]# ls -lh

总用量 12M

-rwxr-xr-x 1 root root   30K 5月  15 2017 centos

drwxrwxrwx 6 www  www   4.0K 7月   6 09:01 inotify-tools-3.14

-rw-r--r-- 1 root root  351K 3月  14 2010 inotify-tools-3.14.tar.gz

-rwx------ 1 root root  1.1K 1月  10 2006 install.sh

-rw------- 1 root root  5.4M 7月  28 08:53 messages

-rw------- 1 root root  5.4M 7月  28 08:53 messages.bak

crw-r--r-- 1 root root 66, 0 7月  15 08:55 mydev

crw-r----- 1 root root 66, 1 7月  15 08:57 mydev2

crw-r--r-- 1 root root 66, 3 7月  18 00:53 mydev3

drwxr-xr-x 3 root root  4.0K 7月  17 06:02 testdisk-7.1

-rw-r--r-- 1 root root  113K 7月  24 02:43 test.txt


[root@ebs-22618 ~]# xz messages

[root@ebs-22618 ~]# ls -lh

总用量 6.1M

-rwxr-xr-x 1 root root   30K 5月  15 2017 centos

drwxrwxrwx 6 www  www   4.0K 7月   6 09:01 inotify-tools-3.14

-rw-r--r-- 1 root root  351K 3月  14 2010 inotify-tools-3.14.tar.gz

-rwx------ 1 root root  1.1K 1月  10 2006 install.sh

-rw------- 1 root root  5.4M 7月  28 08:53 messages.bak

-rw------- 1 root root  249K 7月  28 08:53 messages.xz

crw-r--r-- 1 root root 66, 0 7月  15 08:55 mydev

crw-r----- 1 root root 66, 1 7月  15 08:57 mydev2

crw-r--r-- 1 root root 66, 3 7月  18 00:53 mydev3

drwxr-xr-x 3 root root  4.0K 7月  17 06:02 testdisk-7.1

-rw-r--r-- 1 root root  113K 7月  24 02:43 test.txt

image.png


[root@ebs-22618 ~]# xz -d messages.xz

[root@ebs-22618 ~]# ls -lh

总用量 12M

-rwxr-xr-x 1 root root   30K 5月  15 2017 centos

drwxrwxrwx 6 www  www   4.0K 7月   6 09:01 inotify-tools-3.14

-rw-r--r-- 1 root root  351K 3月  14 2010 inotify-tools-3.14.tar.gz

-rwx------ 1 root root  1.1K 1月  10 2006 install.sh

-rw------- 1 root root  5.4M 7月  28 08:53 messages

-rw------- 1 root root  5.4M 7月  28 08:53 messages.bak

crw-r--r-- 1 root root 66, 0 7月  15 08:55 mydev

crw-r----- 1 root root 66, 1 7月  15 08:57 mydev2

crw-r--r-- 1 root root 66, 3 7月  18 00:53 mydev3

drwxr-xr-x 3 root root  4.0K 7月  17 06:02 testdisk-7.1

-rw-r--r-- 1 root root  113K 7月  24 02:43 test.txt

image.png



[root@ebs-22618 ~]# xz messages

[root@ebs-22618 ~]# ls -lh

总用量 6.1M

-rwxr-xr-x 1 root root   30K 5月  15 2017 centos

drwxrwxrwx 6 www  www   4.0K 7月   6 09:01 inotify-tools-3.14

-rw-r--r-- 1 root root  351K 3月  14 2010 inotify-tools-3.14.tar.gz

-rwx------ 1 root root  1.1K 1月  10 2006 install.sh

-rw------- 1 root root  5.4M 7月  28 08:53 messages.bak

-rw------- 1 root root  249K 7月  28 08:53 messages.xz

crw-r--r-- 1 root root 66, 0 7月  15 08:55 mydev

crw-r----- 1 root root 66, 1 7月  15 08:57 mydev2

crw-r--r-- 1 root root 66, 3 7月  18 00:53 mydev3

drwxr-xr-x 3 root root  4.0K 7月  17 06:02 testdisk-7.1

-rw-r--r-- 1 root root  113K 7月  24 02:43 test.txt

image.png

[root@ebs-22618 ~]# xzdec messages.xz  (也是临时解压到屏幕上 (与 xzcat 一样))

[root@ebs-22618 ~]# ls -lh

总用量 6.1M

-rwxr-xr-x 1 root root   30K 5月  15 2017 centos

drwxrwxrwx 6 www  www   4.0K 7月   6 09:01 inotify-tools-3.14

-rw-r--r-- 1 root root  351K 3月  14 2010 inotify-tools-3.14.tar.gz

-rwx------ 1 root root  1.1K 1月  10 2006 install.sh

-rw------- 1 root root  5.4M 7月  28 08:53 messages.bak

-rw------- 1 root root  249K 7月  28 08:53 messages.xz

crw-r--r-- 1 root root 66, 0 7月  15 08:55 mydev

crw-r----- 1 root root 66, 1 7月  15 08:57 mydev2

crw-r--r-- 1 root root 66, 3 7月  18 00:53 mydev3

drwxr-xr-x 3 root root  4.0K 7月  17 06:02 testdisk-7.1

-rw-r--r-- 1 root root  113K 7月  24 02:43 test.txt


[root@ebs-22618 ~]# man xzdec

image.png

 

[root@ebs-22618 ~]# xzdec -dk messages.xz > messages   (-dk应该可以省略的) ( > messages 输出重定向表示结果生成了messages文件,也就是解压并保留原文件吧)

[root@ebs-22618 ~]# ls -lh

总用量 12M

-rwxr-xr-x 1 root root   30K 5月  15 2017 centos

drwxrwxrwx 6 www  www   4.0K 7月   6 09:01 inotify-tools-3.14

-rw-r--r-- 1 root root  351K 3月  14 2010 inotify-tools-3.14.tar.gz

-rwx------ 1 root root  1.1K 1月  10 2006 install.sh

-rw-r--r-- 1 root root  5.4M 7月  31 04:56 messages

-rw------- 1 root root  5.4M 7月  28 08:53 messages.bak

-rw------- 1 root root  249K 7月  28 08:53 messages.xz

crw-r--r-- 1 root root 66, 0 7月  15 08:55 mydev

crw-r----- 1 root root 66, 1 7月  15 08:57 mydev2

crw-r--r-- 1 root root 66, 3 7月  18 00:53 mydev3

drwxr-xr-x 3 root root  4.0K 7月  17 06:02 testdisk-7.1

-rw-r--r-- 1 root root  113K 7月  24 02:43 test.txt


[root@ebs-22618 ~]# zip test.zip test/*    好像  与  zip test.zip test/ 效果是一样的 

  adding: test/test1/ (stored 0%)

  adding: test/test2/ (stored 0%)

[root@ebs-22618 ~]# ls -lh

总用量 12M

-rwxr-xr-x 1 root root   30K 5月  15 2017 centos

drwxrwxrwx 6 www  www   4.0K 7月   6 09:01 inotify-tools-3.14

-rw-r--r-- 1 root root  351K 3月  14 2010 inotify-tools-3.14.tar.gz

-rwx------ 1 root root  1.1K 1月  10 2006 install.sh

-rw-r--r-- 1 root root  5.4M 7月  31 04:59 messages

-rw------- 1 root root  5.4M 7月  28 08:53 messages.bak

-rw------- 1 root root  249K 7月  28 08:53 messages.xz

crw-r--r-- 1 root root 66, 0 7月  15 08:55 mydev

crw-r----- 1 root root 66, 1 7月  15 08:57 mydev2

crw-r--r-- 1 root root 66, 3 7月  18 00:53 mydev3

drwxr-xr-x 4 root root  4.0K 7月  31 05:07 test

drwxr-xr-x 3 root root  4.0K 7月  17 06:02 testdisk-7.1

-rw-r--r-- 1 root root  113K 7月  24 02:43 test.txt

-rw-r--r-- 1 root root   322 7月  31 05:09 test.zip


[root@ebs-22618 ~]# mv test test-bak

[root@ebs-22618 ~]# unzip test.zip

Archive:  test.zip

   creating: test/test1/

   creating: test/test2/


[root@ebs-22618 ~]# ls -lh

总用量 12M

-rwxr-xr-x 1 root root   30K 5月  15 2017 centos

drwxrwxrwx 6 www  www   4.0K 7月   6 09:01 inotify-tools-3.14

-rw-r--r-- 1 root root  351K 3月  14 2010 inotify-tools-3.14.tar.gz

-rwx------ 1 root root  1.1K 1月  10 2006 install.sh

-rw-r--r-- 1 root root  5.4M 7月  31 04:59 messages

-rw------- 1 root root  5.4M 7月  28 08:53 messages.bak

-rw------- 1 root root  249K 7月  28 08:53 messages.xz

crw-r--r-- 1 root root 66, 0 7月  15 08:55 mydev

crw-r----- 1 root root 66, 1 7月  15 08:57 mydev2

crw-r--r-- 1 root root 66, 3 7月  18 00:53 mydev3

drwxr-xr-x 4 root root  4.0K 7月  31 05:14 test

drwxr-xr-x 4 root root  4.0K 7月  31 05:07 test-bak

drwxr-xr-x 3 root root  4.0K 7月  17 06:02 testdisk-7.1

-rw-r--r-- 1 root root  113K 7月  24 02:43 test.txt

-rw-r--r-- 1 root root   322 7月  31 05:09 test.zip






[root@ebs-22618 ~]# man tar 

[root@ebs-22618 ~]# cd test

[root@ebs-22618 test]# ls

123  adb       lxy6     sort.test  test1.txt  test2.txt  test6.txt  x12  xyz123

a    hello123  sed.txt  test1      test2      test3.txt  test.txt   xyz  y123

[root@ebs-22618 test]# tar -cf test.tar test*.txt

[root@ebs-22618 test]# ls -lh                          test.tar 太大,因为tar本身包含元数据,相当于衣服包起来(衣服有份量),所有体积较大

总用量 36K

-rw-r--r-- 1 root root    0 7月  31 05:24 123

-rw-r--r-- 1 root root    0 7月  31 05:24 a

-rw-r--r-- 1 root root    0 7月  31 05:24 adb

-rw-r--r-- 1 root root    0 7月  31 05:24 hello123

-rw-r--r-- 1 root root    0 7月  31 05:24 lxy6

-rw-r--r-- 1 root root    0 7月  31 05:24 sed.txt

-rw-r--r-- 1 root root    0 7月  31 05:24 sort.test

drwxr-xr-x 2 root root 4.0K 7月  31 05:07 test1

-rw-r--r-- 1 root root    0 7月  31 05:24 test1.txt

drwxr-xr-x 2 root root 4.0K 7月  31 05:07 test2

-rw-r--r-- 1 root root    0 7月  31 05:24 test2.txt

-rw-r--r-- 1 root root    0 7月  31 05:24 test3.txt

-rw-r--r-- 1 root root    0 7月  31 05:25 test6.txt

-rw-r--r-- 1 root root  10K 7月  31 05:32 test.tar

-rw-r--r-- 1 root root    0 7月  31 05:25 test.txt

drwxr-xr-x 2 root root 4.0K 7月  31 05:25 x12

drwxr-xr-x 2 root root 4.0K 7月  31 05:25 xyz

drwxr-xr-x 2 root root 4.0K 7月  31 05:25 xyz123

drwxr-xr-x 2 root root 4.0K 7月  31 05:25 y123



[root@ebs-22618 test]# rm -rf test*.txt

[root@ebs-22618 test]# ls -lh

总用量 36K

-rw-r--r-- 1 root root    0 7月  31 05:24 123

-rw-r--r-- 1 root root    0 7月  31 05:24 a

-rw-r--r-- 1 root root    0 7月  31 05:24 adb

-rw-r--r-- 1 root root    0 7月  31 05:24 hello123

-rw-r--r-- 1 root root    0 7月  31 05:24 lxy6

-rw-r--r-- 1 root root    0 7月  31 05:24 sed.txt

-rw-r--r-- 1 root root    0 7月  31 05:24 sort.test

drwxr-xr-x 2 root root 4.0K 7月  31 05:07 test1

drwxr-xr-x 2 root root 4.0K 7月  31 05:07 test2

-rw-r--r-- 1 root root  10K 7月  31 05:32 test.tar

drwxr-xr-x 2 root root 4.0K 7月  31 05:25 x12

drwxr-xr-x 2 root root 4.0K 7月  31 05:25 xyz

drwxr-xr-x 2 root root 4.0K 7月  31 05:25 xyz123

drwxr-xr-x 2 root root 4.0K 7月  31 05:25 y123


[root@ebs-22618 test]# tar -xf test.tar  (要想引用归档文件名 必须用f选项,且f选项后必跟归档文件名)

[root@ebs-22618 test]# ls -lh

总用量 36K

-rw-r--r-- 1 root root    0 7月  31 05:24 123

-rw-r--r-- 1 root root    0 7月  31 05:24 a

-rw-r--r-- 1 root root    0 7月  31 05:24 adb

-rw-r--r-- 1 root root    0 7月  31 05:24 hello123

-rw-r--r-- 1 root root    0 7月  31 05:24 lxy6

-rw-r--r-- 1 root root    0 7月  31 05:24 sed.txt

-rw-r--r-- 1 root root    0 7月  31 05:24 sort.test

drwxr-xr-x 2 root root 4.0K 7月  31 05:07 test1

-rw-r--r-- 1 root root    0 7月  31 05:24 test1.txt

drwxr-xr-x 2 root root 4.0K 7月  31 05:07 test2

-rw-r--r-- 1 root root    0 7月  31 05:24 test2.txt

-rw-r--r-- 1 root root    0 7月  31 05:24 test3.txt

-rw-r--r-- 1 root root    0 7月  31 05:25 test6.txt

-rw-r--r-- 1 root root  10K 7月  31 05:32 test.tar

-rw-r--r-- 1 root root    0 7月  31 05:25 test.txt

drwxr-xr-x 2 root root 4.0K 7月  31 05:25 x12

drwxr-xr-x 2 root root 4.0K 7月  31 05:25 xyz

drwxr-xr-x 2 root root 4.0K 7月  31 05:25 xyz123

drwxr-xr-x 2 root root 4.0K 7月  31 05:25 y123



[root@ebs-22618 test]# tar -tf test.tar  不打开看归档文件里面的东西

test1.txt

test2.txt

test3.txt

test6.txt

test.txt

[root@ebs-22618 test]#


[root@ebs-22618 test]# xz test.tar

[root@ebs-22618 test]# ls -lh

总用量 28K

-rw-r--r-- 1 root root    0 7月  31 05:24 123

-rw-r--r-- 1 root root    0 7月  31 05:24 a

-rw-r--r-- 1 root root    0 7月  31 05:24 adb

-rw-r--r-- 1 root root    0 7月  31 05:24 hello123

-rw-r--r-- 1 root root    0 7月  31 05:24 lxy6

-rw-r--r-- 1 root root    0 7月  31 05:24 sed.txt

-rw-r--r-- 1 root root    0 7月  31 05:24 sort.test

drwxr-xr-x 2 root root 4.0K 7月  31 05:07 test1

-rw-r--r-- 1 root root    0 7月  31 05:24 test1.txt

drwxr-xr-x 2 root root 4.0K 7月  31 05:07 test2

-rw-r--r-- 1 root root    0 7月  31 05:24 test2.txt

-rw-r--r-- 1 root root    0 7月  31 05:24 test3.txt

-rw-r--r-- 1 root root    0 7月  31 05:25 test6.txt

-rw-r--r-- 1 root root  200 7月  31 05:32 test.tar.xz

-rw-r--r-- 1 root root    0 7月  31 05:25 test.txt

drwxr-xr-x 2 root root 4.0K 7月  31 05:25 x12

drwxr-xr-x 2 root root 4.0K 7月  31 05:25 xyz

drwxr-xr-x 2 root root 4.0K 7月  31 05:25 xyz123

drwxr-xr-x 2 root root 4.0K 7月  31 05:25 y123




[root@ebs-22618 test]# xz -d test.tar.xz

[root@ebs-22618 test]# ls -lh

总用量 36K

-rw-r--r-- 1 root root    0 7月  31 05:24 123

-rw-r--r-- 1 root root    0 7月  31 05:24 a

-rw-r--r-- 1 root root    0 7月  31 05:24 adb

-rw-r--r-- 1 root root    0 7月  31 05:24 hello123

-rw-r--r-- 1 root root    0 7月  31 05:24 lxy6

-rw-r--r-- 1 root root    0 7月  31 05:24 sed.txt

-rw-r--r-- 1 root root    0 7月  31 05:24 sort.test

drwxr-xr-x 2 root root 4.0K 7月  31 05:07 test1

-rw-r--r-- 1 root root    0 7月  31 05:24 test1.txt

drwxr-xr-x 2 root root 4.0K 7月  31 05:07 test2

-rw-r--r-- 1 root root    0 7月  31 05:24 test2.txt

-rw-r--r-- 1 root root    0 7月  31 05:24 test3.txt

-rw-r--r-- 1 root root    0 7月  31 05:25 test6.txt

-rw-r--r-- 1 root root  10K 7月  31 05:32 test.tar

-rw-r--r-- 1 root root    0 7月  31 05:25 test.txt

drwxr-xr-x 2 root root 4.0K 7月  31 05:25 x12

drwxr-xr-x 2 root root 4.0K 7月  31 05:25 xyz

drwxr-xr-x 2 root root 4.0K 7月  31 05:25 xyz123

drwxr-xr-x 2 root root 4.0K 7月  31 05:25 y123




[root@ebs-22618 test]# rm -f test.tar

[root@ebs-22618 test]# tar -jcf test.tar.bz2 test*.txt

[root@ebs-22618 test]# ls -lh

总用量 28K

-rw-r--r-- 1 root root    0 7月  31 05:24 123

-rw-r--r-- 1 root root    0 7月  31 05:24 a

-rw-r--r-- 1 root root    0 7月  31 05:24 adb

-rw-r--r-- 1 root root    0 7月  31 05:24 hello123

-rw-r--r-- 1 root root    0 7月  31 05:24 lxy6

-rw-r--r-- 1 root root    0 7月  31 05:24 sed.txt

-rw-r--r-- 1 root root    0 7月  31 05:24 sort.test

drwxr-xr-x 2 root root 4.0K 7月  31 05:07 test1

-rw-r--r-- 1 root root    0 7月  31 05:24 test1.txt

drwxr-xr-x 2 root root 4.0K 7月  31 05:07 test2

-rw-r--r-- 1 root root    0 7月  31 05:24 test2.txt

-rw-r--r-- 1 root root    0 7月  31 05:24 test3.txt

-rw-r--r-- 1 root root    0 7月  31 05:25 test6.txt

-rw-r--r-- 1 root root  165 7月  31 05:59 test.tar.bz2

-rw-r--r-- 1 root root    0 7月  31 05:25 test.txt

drwxr-xr-x 2 root root 4.0K 7月  31 05:25 x12

drwxr-xr-x 2 root root 4.0K 7月  31 05:25 xyz

drwxr-xr-x 2 root root 4.0K 7月  31 05:25 xyz123

drwxr-xr-x 2 root root 4.0K 7月  31 05:25 y123


[root@ebs-22618 test]# rm -f test*.txt

[root@ebs-22618 test]# tar -jxf test.tar.bz2


[root@ebs-22618 test]# ls

123  hello123  sort.test  test2      test6.txt     x12     y123

a    lxy6      test1      test2.txt  test.tar.bz2  xyz

adb  sed.txt   test1.txt  test3.txt  test.txt      xyz123

[root@ebs-22618 test]# rm -f test*.txt

[root@ebs-22618 test]# tar -xf test.tar.bz2   (可以根据文件名后缀,展开的时候,自动根据后缀,来判定

是不是压缩了,自动找解压工具来解压缩的)

[root@ebs-22618 test]# ls

123  hello123  sort.test  test2      test6.txt     x12     y123

a    lxy6      test1      test2.txt  test.tar.bz2  xyz

adb  sed.txt   test1.txt  test3.txt  test.txt      xyz123


[root@ebs-22618 test]# tar -jtf test.tar.bz2        (不解压,直接看里面的内容)

test1.txt

test2.txt

test3.txt

test6.txt

test.txt


[root@ebs-22618 test]# tar -tf test.tar.bz2        (不解压,直接看里面的内容,j可以省略)

test1.txt

test2.txt

test3.txt

test6.txt

test.txt


[root@ebs-22618 test]# man cpio


image.png


[root@ebs-22618 test]# file /boot/initramfs-2.6.32-696.el6.x86_64.img

/boot/initramfs-2.6.32-696.el6.x86_64.img: gzip compressed data, from Unix, last modified: Thu May 11 04:07:02 2017, max compression


[root@ebs-22618 test]# cp /boot/initramfs-2.6.32-696.el6.x86_64.img /root

[root@ebs-22618 test]# cd

[root@ebs-22618 ~]#

[root@ebs-22618 ~]# mv initramfs-2.6.32-696.el6.x86_64.img initramfs-2.6.32-696.el6.x86_64.img.gz

[root@ebs-22618 ~]# gzip -d initramfs-2.6.32-696.el6.x86_64.img.gz

[root@ebs-22618 ~]# ls -lh

总用量 65M

-rwxr-xr-x 1 root root   30K 5月  15 2017 centos

-rw------- 1 root root   54M 7月  31 06:33 initramfs-2.6.32-696.el6.x86_64.img

drwxrwxrwx 6 www  www   4.0K 7月   6 09:01 inotify-tools-3.14

-rw-r--r-- 1 root root  351K 3月  14 2010 inotify-tools-3.14.tar.gz

-rwx------ 1 root root  1.1K 1月  10 2006 install.sh

-rw-r--r-- 1 root root  5.4M 7月  31 04:59 messages

-rw------- 1 root root  5.4M 7月  28 08:53 messages.bak

-rw------- 1 root root  249K 7月  28 08:53 messages.xz

crw-r--r-- 1 root root 66, 0 7月  15 08:55 mydev

crw-r----- 1 root root 66, 1 7月  15 08:57 mydev2

crw-r--r-- 1 root root 66, 3 7月  18 00:53 mydev3

drwxr-xr-x 8 root root  4.0K 7月  31 06:04 test

drwxr-xr-x 4 root root  4.0K 7月  31 05:07 test-bak

drwxr-xr-x 3 root root  4.0K 7月  17 06:02 testdisk-7.1

-rw-r--r-- 1 root root  113K 7月  24 02:43 test.txt

-rw-r--r-- 1 root root   322 7月  31 05:09 test.zip


[root@ebs-22618 ~]# file initramfs-2.6.32-696.el6.x86_64.img

initramfs-2.6.32-696.el6.x86_64.img: ASCII cpio archive (SVR4 with no CRC)





[root@ebs-22618 ~]# read NAME

abc

[root@ebs-22618 ~]# echo $NAME

abc

[root@ebs-22618 ~]#

[root@ebs-22618 ~]# read NAME

abc def

[root@ebs-22618 ~]# echo $NAME

abc def

[root@ebs-22618 ~]#

[root@ebs-22618 ~]# read NAME AGE

jerry 18

[root@ebs-22618 ~]# echo $NAME

jerry

[root@ebs-22618 ~]# echo $AGE

18

[root@ebs-22618 ~]#


如果变量和值的个数不相等,值比变量个数多, 前面一对一 后面全部给了最后一个变量

[root@ebs-22618 ~]# read NAME AGE

jerry 19 66 99

[root@ebs-22618 ~]# echo $NAME

jerry

[root@ebs-22618 ~]# echo $AGE

19 66 99

[root@ebs-22618 ~]#





如果变量和值的个数不相等,值比变量个数少, 前面一对一 后面为空

[root@ebs-22618 ~]# read NAME AGE

jerry

[root@ebs-22618 ~]# echo $NAME

jerry

[root@ebs-22618 ~]# echo $AGE


[root@ebs-22618 ~]#



[root@ebs-22618 ~]# vim sum.sh

#!/bin/bash

#

echo "Input two integer:"

read A B

echo $[$A+$B]

~

~


[root@ebs-22618 ~]# chmod +x sum.sh

[root@ebs-22618 ~]# ./sum.sh

Input two integer:

2 3

5



[root@ebs-22618 ~]# vim sum.sh

#!/bin/bash

#

echo -n "Input two integer:"  #-n 紧接着后面不换行

read A B

echo "$A plus $B is: $[$A+$B]"



[root@ebs-22618 ~]# ./sum.sh

Input two integer:4 6

4 plus 6 is: 10

[root@ebs-22618 ~]#



[root@ebs-22618 ~]# vim sum.sh

#!/bin/bash

#

#echo -n "Input two integer:"

read -p "Input two integers: " A B    # 这里使用 -p (prompt)直接提示

echo "$A plus $B is: $[$A+$B]"

~

[root@ebs-22618 ~]# ./sum.sh

Input two integers: 6 8

6 plus 8 is: 14


[root@ebs-22618 ~]# help read

image.png


[root@ebs-22618 ~]# vim sum.sh

#!/bin/bash

#

#echo -n "Input two integer:"

read -t 5 -p "Input two integers [ 100 and 1000 ]: " A B   # 等5秒 ,看用户输入否,如果 超时,自动往下执行 

[ -z $A ] && A=100

[ -z $B ] && B=1000

echo "$A plus $B is: $[$A+$B]"

~


[root@ebs-22618 ~]# ./sum.sh

Input two integers: 100 plus 1000 is: 1100

[root@ebs-22618 ~]# ./sum.sh

Input two integers [ 100 and 1000 ]: 5 7

5 plus 7 is: 12



[root@ebs-22618 ~]# vim myar.sh

#!/bin/bash

#

read -p "Three files: " FILE1 FILE2 FILE3

read -p "Destination: " DEST


tar -jcf ${DEST}.tar.bz2 $FILE1 $FILE2 $FILE3

~

[root@ebs-22618 ~]# chmod +x myar.sh


[root@ebs-22618 ~]# ./myar.sh

Three files: test/test1.txt test/test2.txt test/test3.txt

Destination: test/myartest

[root@ebs-22618 ~]# ls -lh test

总用量 32K

-rw-r--r-- 1 root root    0 7月  31 05:24 123

-rw-r--r-- 1 root root    0 7月  31 05:24 a

-rw-r--r-- 1 root root    0 7月  31 05:24 adb

-rw-r--r-- 1 root root    0 7月  31 05:24 hello123

-rw-r--r-- 1 root root    0 7月  31 05:24 lxy6

-rw-r--r-- 1 root root  143 7月  31 09:11 myartest.tar.bz2

-rw-r--r-- 1 root root    0 7月  31 05:24 sed.txt

-rw-r--r-- 1 root root    0 7月  31 05:24 sort.test

drwxr-xr-x 2 root root 4.0K 7月  31 05:07 test1

-rw-r--r-- 1 root root    0 7月  31 05:24 test1.txt

drwxr-xr-x 2 root root 4.0K 7月  31 05:07 test2

-rw-r--r-- 1 root root    0 7月  31 05:24 test2.txt

-rw-r--r-- 1 root root    0 7月  31 05:24 test3.txt

-rw-r--r-- 1 root root    0 7月  31 05:25 test6.txt

-rw-r--r-- 1 root root  165 7月  31 05:59 test.tar.bz2

-rw-r--r-- 1 root root    0 7月  31 05:25 test.txt

drwxr-xr-x 2 root root 4.0K 7月  31 05:25 x12

drwxr-xr-x 2 root root 4.0K 7月  31 05:25 xyz

drwxr-xr-x 2 root root 4.0K 7月  31 05:25 xyz123

drwxr-xr-x 2 root root 4.0K 7月  31 05:25 y123

[root@ebs-22618 ~]# tar -tf test/myartest.tar.bz2

test/test1.txt

test/test2.txt

test/test3.txt


[root@ebs-22618 ~]# vim myar.sh

#!/bin/bash

#

read -p "Three files: " FILE1 FILE2 FILE3

read -p "Destination: " DEST

read -p "Compress [gzip|bzip2|xz]: " COMP


case $COMP in

gzip)

  tar -zcf ${DEST}.tar.gz $FILE1 $FILE2 $FILE3;;

bzip2)

  tar -jcf ${DEST}.tar.bz2 $FILE1 $FILE2 $FILE3;;

xz)

  tar -cf ${DEST}.tar $FILE1 $FILE2 $FILE3

  xz ${DEST}.tar;;

*)

  echo "Unknown."

  exit 9;;

esac





[root@ebs-22618 ~]# vim while.sh

#!/bin/bash

declare -i I=1

declare -i SUM=0


while [ $I -le 100 ]; do

  let SUM+=$I

  let I++

done


echo $SUM

~



[root@ebs-22618 ~]# chmod +x while.sh

[root@ebs-22618 ~]# ./while.sh

5050






[root@ebs-22618 ~]# vim translate.sh

#!/bin/bash

#

read -p "Input something: " STRING 


while [ $STRING != 'quit' ]; do

  echo $STRING | tr 'a-z' 'A-Z'

  read -p "Input something: " STRING 

done


[root@ebs-22618 ~]# chmod +x translate.sh


[root@ebs-22618 ~]# ./translate.sh

Input something: adb

ADB

Input something: hello

HELLO

Input something: quit

[root@ebs-22618 ~]#



[root@ebs-22618 ~]# vim detechhadoop.sh

#!/bin/bash

#

who | grep "hadoop" &> /dev/null

RETVAL=$?


while [ $RETVAL -ne 0 ]; do

  echo "`date`, hadoop is not logged."

  sleep 5

  who | grep "hadoop" &> /dev/null

  RETVAL=$?


done


echo "hadoop is logged in."



[root@ebs-22618 ~]# useradd hadoop

[root@ebs-22618 ~]# passwd hadoop

更改用户 hadoop 的密码 。

新的 密码:

重新输入新的 密码:

passwd: 所有的身份验证令牌已经成功更新。

[root@ebs-22618 ~]#


[root@ebs-22618 ~]# chmod +x detechhadoop.sh


[root@ebs-22618 ~]# ./detechhadoop.sh

2018年 08月 01日 星期三 02:34:42 CST, hadoop is not logged.

2018年 08月 01日 星期三 02:34:47 CST, hadoop is not logged.

2018年 08月 01日 星期三 02:34:52 CST, hadoop is not logged.

2018年 08月 01日 星期三 02:34:57 CST, hadoop is not logged.


当 hadoop 登录后 就显示 hadoop 登录了,然后程序就退出了

普通分类: