特殊符号; && ||
第一个符号: ;分号
作用: 命令的分隔符 不管前面命令是否执行成功都会执行后面的命令
[root@ahui ~]#touch test.txt;ll test.txt;pwd
-rw-r--r-- 1 root root 0 5月 12 09:00 test.txt
/root
命令执行错误继续执行后面的命令
[root@ahui ~]#mkdi ahui;ll ahui;pwd
-bash: mkdi: 未找到命令
总用量 0
/root
[root@ahui ~]#mkdi ahui;ll ahui;pw
-bash: mkdi: 未找到命令
总用量 0
-bash: pw: 未找到命令
第二个符号: &&
作用: 前面的命令执行成功 才执行&& 后面的命令
[root@ahui ~]#mkdir ahui && ll ahui
mkdir: 无法创建目录"ahui": 文件已存在
[root@ahui ~]#
[root@ahui ~]#touch test.txt && ll test.txt && pwd
-rw-r--r-- 1 root root 0 5月 12 09:04 test.txt
/root
[root@ahui ~]#
[root@ahui ~]#touch test.txt && ll test.txtttt && pwd
ls: 无法访问test.txtttt: 没有那个文件或目录
[root@ahui ~]#ll
总用量 0
drwxr-xr-x 2 root root 6 5月 12 09:01 ahui
-rw-r--r-- 1 root root 0 5月 12 09:04 test.txt
[root@ahui ~]#cd ahui && touch test.txt
[root@ahui ~/ahui]#ll
总用量 0
-rw-r--r-- 1 root root 0 5月 12 09:05 test.txt
第三个符号: ||
作用: 前面的命令执行失败 才执行后面的命令
[root@ahui ~]#touch test.txt|| ll test.txt||pwd
[root@ahui ~]#
[root@ahui ~]#touc test.txt|| ll test.txt||pwd
-bash: touc: 未找到命令
-rw-r--r-- 1 root root 0 5月 12 09:07 test.txt
[root@ahui ~]#touc test.txt|| ll test.txttttt ||pwd
-bash: touc: 未找到命令
ls: 无法访问test.txttttt: 没有那个文件或目录
/root
扩展举例: 如果目录不存在则创建
判断目录是否存在:使用 -d 判断test目录是否存在
[root@ahui ~]#[ -d test ]
[root@ahui ~]#echo $? # 返回值0则成功 非0失败
1
[root@ahui ~]#[ -d test ] || mkdir test
[root@ahui ~]#ll
总用量 0
drwxr-xr-x 2 root root 22 5月 12 09:05 ahui
drwxr-xr-x 2 root root 6 5月 12 09:10 test
文件压缩
为什么压缩:
- 不常用的文件占用磁盘空间(节约空间)
- 压缩后的文件发送到备份服务器
- 在发送的过程中减少磁盘IO
1个文件—> 发送给服务器 —> 和服务器建立连接 IO请求
1个文件建立1次IO请求 INPUT OUTPUT
1000个文件 建立1000次IO请求 造成磁盘压力大 导致负载高
把1000个文件打包成1个文件 建立1次IO减少IO操作
什么时间压缩
- 在压缩的过程中最消耗服务器的CPU
- 业务的低谷期压缩
- 业务的低谷期: 流量较少 访问量少
- 具体看公司的zabbix流量图 最低点进行备份
- 学习视频网站: 12点以后备份
- 游戏平台: 早上5点左右
- 小说平台: 早上5点左右
- 公司官网: 晚上12点后
- 电商平台: 早上5点左右
- 快播视频: 中午12点
tar 压缩
命令格式:
命令 [参数选项] 压缩包名称.tar.gz 文件1 文件2 目录
命令 参数 筐子 黄瓜 香蕉 茄子
tar -zcvf package.tar.gz ahui.txt /etc/hosts
压缩目录会压缩里面所有内容
压缩的参数前面可以加- 也可以不加
参数选项:
-----------------------------------------------------
z # 使用gzip方式进行压缩
c # 使用create创建压缩包
v # 显示压缩的过程 verbose 可以省略
f # 指定文件
x # 表示解压 使用xf进行解压
p # 解压时保留文件原有权限 使用pxf进行解压
t # 查看压缩的里面的文件名称 使用tf进行查看
C # 指定解压到哪个位置(默认解压到当前路径)
------------------------------------------------------
-P # 不提示从成员中删除/
–exclude # 排除文件
–exclude-from # 排除文件中记录的文件名
案例1: 打包/etc/hosts 压缩包名称 hosts.tar.gz
相对路径:
首先进入到/etc/目录
[root@ahui ~]#cd /etc
[root@ahui /etc]#ll hosts
-rw-r--r--. 1 root root 158 Jun 7 2013 hosts
[root@ahui /etc]#tar zcvf hosts.tar.gz hosts
hosts
[root@ahui /etc]#ll hosts.tar.gz
-rw-r--r-- 1 root root 166 May 12 09:44 hosts.tar.gz
绝对路径:
系统为了保护系统文件安全 使用绝对路径打包 会删除/
如果不删除解压后会覆盖源文件
例如压缩了/etc/hosts 如果不删除/ 则解压后的路径/etc/hosts 覆盖原来的文件
[root@ahui ~]#tar zcvf hosts.tar.gz /etc/hosts
tar: Removing leading `/' from member names
/etc/hosts
[root@ahui ~]#
[root@ahui ~]#tar tf hosts.tar.gz
etc/hosts
案例2: 不显示压缩过程
[root@ahui ~]#tar zcf all.tar.gz test test.txt
[root@ahui ~]#ll
total 8
-rw-r--r-- 1 root root 141 May 12 09:51 all.tar.gz
案例3: 同时打包多个文件 /etc/hosts /etc/passwd test.txt
[root@ahui ~]#tar zcvf all.tar.gz /etc/hosts /etc/passwd test.txt
tar: Removing leading `/' from member names
/etc/hosts
/etc/passwd
test.txt
案例4: 指定压缩包存放的位置 压缩后的文件放在/opt目录
[root@ahui ~]#tar zcvf /opt/all.tar.gz /etc/hosts /etc/passwd test.txt
tar: Removing leading `/' from member names
/etc/hosts
/etc/passwd
test.txt
[root@ahui ~]#ll /opt/
-rw-r--r-- 1 root root 808 May 12 09:55 all.tar.gz
案例5: 解压压缩包使用xf
[root@ahui /opt]#tar xf all.tar.gz
[root@ahui /opt]#ll
total 4
-rw-r--r-- 1 root root 808 May 12 09:55 all.tar.gz
drwxr-xr-x 2 root root 33 May 12 09:57 etc
-rw-r--r-- 1 root root 0 May 12 09:07 test.txt
[root@ahui /opt]#ll etc/
total 8
-rw-r--r-- 1 root root 158 Jun 7 2013 hosts
-rw-r--r-- 1 root root 1368 Nov 30 20:57 passwd
注意: 解压结果默认是解压到当前的所在路径 而不是压缩包所在的位置/opt
[root@ahui ~]#tar xf /opt/all.tar.gz
[root@ahui ~]#ll
total 0
drwxr-xr-x 2 root root 33 May 12 09:58 etc
-rw-r--r-- 1 root root 0 May 12 09:07 test.txt
案例6: 指定解压到固定的目录
将all.tar.gz 解压后的结果放到/opt目录 使用-C 指定
[root@ahui ~]#tar xf all.tar.gz -C /opt/
[root@ahui ~]#ll
total 4
-rw-r--r-- 1 root root 808 May 12 09:55 all.tar.gz
[root@ahui ~]#ll /opt/
total 0
drwxr-xr-x 2 root root 33 May 12 10:00 etc
-rw-r--r-- 1 root root 0 May 12 09:07 test.txt
案例7: 查看压缩包里的内容
使用-tf参数查看
[root@ahui ~]#tar tf all.tar.gz
etc/services
案例8: 排除压缩某个文件 exclude
[root@ahui ~]#mkdir ahui
[root@ahui ~]#cd ahui/
[root@ahui ~/ahui]#ll
total 0
[root@ahui ~/ahui]#touch {1..3}.txt
[root@ahui ~/ahui]#ll
total 0
-rw-r--r-- 1 root root 0 May 12 10:07 1.txt
-rw-r--r-- 1 root root 0 May 12 10:07 2.txt
-rw-r--r-- 1 root root 0 May 12 10:07 3.txt
压缩当前目录所有的.txt 文件
[root@ahui ~/ahui]#tar zcvf all.tar.gz ./*
./1.txt
./2.txt
./3.txt
压缩所有的.txt 只排除3.txt
[root@ahui ~/ahui]#tar zcvf exclude.tar.gz ./* --exclude=1.txt
./2.txt
./3.txt
[root@ahui ~/ahui]#tar tf exclude.tar.gz
./2.txt
./3.txt
排除多个文件
[root@ahui ~/ahui]#tar zcvf exclude.tar.gz ./* --exclude=1.txt --exclude=2.txt
./3.txt
排除的多个文件名称可以写入到一个文件中 然后排除这个文件中的所有
[root@ahui ~/ahui]#cat file.txt
1.txt
2.txt
[root@ahui ~/ahui]#echo -e "1.txt\n2.txt" > file.txt
[root@ahui ~/ahui]#cat file.txt
1.txt
2.txt
[root@ahui ~/ahui]#cat file.txt
1.txt
2.txt
[root@ahui ~/ahui]#tar zcvf all.tar.gz ./* --exclude-from=file.txt
./3.txt
./file.txt
[root@ahui ~/ahui]#tar tf all.tar.gz
./3.txt
./file.txt
文件属性(2) 文件权限、selinux相关 .
16819633 - rw-r--r-- . 1 root root 158 6月 7 2013 /etc/hosts
-------- - --------- - - ---- ---- --- ------------ -----------
1 2 3 4 5 6 7 8 9 10
第三列:文件权限
作用: 决定了当前登陆用户对当前文件的权限
rw-r–r-- # 9位权限 三位为一组
rw- # 第一组权限位
r-- # 第二组权限位
r-- # 第三组权限位
r # read 读取文件 cat less more vim
w # write 写入文件 vim cat sed
x # excute 可执行文件 针对脚本(文件中是可执行命令而不是普通的字符)
- # 表示没有权限
第一组权限位: 前三位 rw-
特点:
1)表示属主 文件的主人 谁创建的这个文件
2)创建这个文件的主人对这个文件拥有什么权限(默认拥有rw权限)
3)笔记本属于张三的 张三对这个笔记本拥有的就是rw权限
4)主人对这个文件拥有rw-权限
第二组权限位: 中间三位 r–
特点:
1)表示属组权限位 组内的成员对这个文件拥有的权限
2)张三的家人对这个笔记本拥有r权限 只读
3)小组成员对这个文件 只能查看 r权限
第三组权限位: 后三位 r–
特点:
1)表示其他用户的权限位 陌生人对这个文件拥有的权限
陌生人指的是 不是这个文件的主人 也没有在这个组内
2)老王对这个笔记本拥有只能查看 r权限
对于普通文件最高的权限就是rw 可读 可写
九位权限位:
rw-r–r–
rw- # 文件主人对文件拥有最高权限 可读 可写
r-- # 小组成员只能查看
r-- # 其他用户只能查看
rwx对应的数字来表示权限:
r read----> 4表示
w write—> 2表示
x excute–> 1表示
rw-r–r-- 使用数字表示 将每三位进行相加 等于 644权限
rw- ==== r(4)w(2)-(0) ======= 6
r-- ==== r(4)-(0)-(0) ======= 4
r-- ==== r(4)-(0)-(0) ======= 4
如果数字权限是755 则对应的字母权限位置 相减
rwxr-xr-x
第四列 . selinux相关
开启了selinux防火墙后生成的.
关闭selinux后创建的文件 就没有.
硬链接 软链接
硬链接:
硬链接的特点:
- 在同一个文件系统中有相同的inode号的文件互为硬链接 使用ll -i查看inode号
- 硬链接相当于文件有多个入口 类似超市的多个门
- 相当于复制了多个inode号码 多张藏宝图
- 文件默认1个硬链接
- 目录默认有2个硬链接
- 只能在相同的分区内进行创建
- 不能对目录进行创建硬链接 只能文件
- 删除任意一个硬链接不影响其他的相同inode的文件
- 可以在任意一个入口进入到文件中 如果修改文件 查看每个文件都会发生变化
- 硬链接数0 才真正的被删除 删除所有相同的inode号 文件才真正的被删除
创建硬链接:
ln 源文件 目标文件
[root@ahui ~]#ln 1.txt hard_link.txt
[root@ahui ~]#ll
total 0
-rw-r--r-- 2 root root 0 May 12 11:00 1.txt
-rw-r--r-- 2 root root 0 May 12 11:00 hard_link.txt
[root@ahui ~]#ll -i
total 0
33588705 -rw-r--r-- 2 root root 0 May 12 11:00 1.txt
33588705 -rw-r--r-- 2 root root 0 May 12 11:00 hard_link.txt
[root@ahui ~]#echo hehe > 1.txt
[root@ahui ~]#ll -i
total 8
33588705 -rw-r--r-- 2 root root 5 May 12 11:04 1.txt
33588705 -rw-r--r-- 2 root root 5 May 12 11:04 hard_link.txt
[root@ahui ~]#cat 1.txt
hehe
[root@ahui ~]#cat hard_link.txt
hehe
目录默认有2个硬链接
[root@ahui ~]#ll -id ahui/
33588707 drwxr-xr-x 2 root root 6 May 12 11:05 ahui/
[root@ahui ~]#cd ahui/
[root@ahui ~/ahui]#ll -ia
total 0
33588707 drwxr-xr-x 2 root root 6 May 12 11:05 .
硬链接作用:
提高系统文件的安全性 在企业中用的很少
把重要文件做硬链接
只要/etc/passwd中内发发生变化 家目录下的passwd也会变化
如果/etc/passwd 文件被删除 可以将家目录下的passwd做硬链接到/etc/passwd
[root@ahui ~]#ln /etc/passwd passwd
[root@ahui ~]#ll
total 8
-rw-r--r-- 1 root root 11 May 12 11:09 hard_link.txt
drwxr-xr-x 2 root root 6 May 12 11:05 ahui
-rw-r--r-- 2 root root 1368 Nov 30 20:57 passwd
[root@ahui ~]#ll -id ahui/
33588707 drwxr-xr-x 3 root root 18 May 12 11:17 ahui/
[root@ahui ~]#cd ahui/
[root@ahui ~/ahui]#ll -ia
total 0
33588707 drwxr-xr-x 3 root root 18 May 12 11:17 .
33574977 dr-xr-x---. 4 root root 239 May 12 11:14 ..
51001248 drwxr-xr-x 2 root root 6 May 12 11:17 test
[root@ahui ~/ahui]#cd test/
[root@ahui ~/ahui/test]#ll -ia
total 0
51001248 drwxr-xr-x 2 root root 6 May 12 11:17 .
33588707 drwxr-xr-x 3 root root 18 May 12 11:17 ..
软链接:
软连接的特点:
- 软链接的inode号不同
- 类似windows的快捷方式
- 软链接文件中存放这是源文件的指针 指向源文件的位置
- 删除软链接不影响源文件 类似删除windows的快捷方式
- 删除源文件 软链接文件不能用 红底白字闪烁
- 创建软链接 ln -s
- 文件和目录可以做软链接 可以跨文件系统做软链接
创建软链接:
ln -s 源文件 链接文件
[root@ahui ~]#cat test.txt
hehe
[root@ahui ~]#ln -s test.txt s.txt
[root@ahui ~]#ll
total 4
drwxr-xr-x 3 root root 18 May 12 11:17 ahui
lrwxrwxrwx 1 root root 8 May 12 11:24 s.txt -> test.txt
-rw-r--r-- 1 root root 5 May 12 11:24 test.txt
软链接作用:
企业常用
1.可以利用软链接跨文件系统的方式处理磁盘不够用问题
2.可以利用软链接做代码上线 代码回滚等
软链接和硬链接的区别
-
在linux系统中链接分区两种 一种硬链接 一种是软链接
-
创建方式不同 硬链接使用 ln创建 软链接使用ln -s 创建
-
软链接的inode号不同,硬连接inode号相同
-
目录不能做硬链接 文件和目录和做软链接
-
删除硬链接不影响源文件,删除软链接的链接文件不影响源文件,删除软链接的源文件软链接失效
-
软链接可以跨文件系统 硬链接不可以跨文件系统
-
同时删除源文件和硬链接文件 才真正的被删除(没有被进程调用)
-
软链接在工作中常用 硬链接不常用
注意: 做软链接尽量使用绝对路径
文件时间
stat查看文件详细属性
[root@ahui ~]#stat /etc/hosts
File: ‘/etc/hosts’
Size: 158 Blocks: 8 IO Block: 4096 regular file
Device: 803h/2051d Inode: 16819633 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2022-05-12 09:13:01.708386201 +0800 # 访问时间 cat less
Modify: 2013-06-07 22:31:32.000000000 +0800 # 修改时间 vim
Change: 2020-08-28 11:04:35.586905128 +0800 # 属性修改时间
第一个:访问时间:
只有在第一次修改后第一次查看时间会发生变化
如果不修改文件 后面查看时间不变
[root@ahui ~]#cat test.txt
ahui
[root@ahui ~]#stat test.txt
File: ‘test.txt’
Size: 7 Blocks: 8 IO Block: 4096 regular file
Device: 803h/2051d Inode: 33588713 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2022-05-12 12:04:15.321677944 +0800
第二个:修改时间:
如果使用vim 三个时间都会变化
使用echo测试
[root@ahui ~]#stat test.txt
File: ‘test.txt’
Size: 12 Blocks: 8 IO Block: 4096 regular file
Device: 803h/2051d Inode: 33588714 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2022-05-12 12:06:10.353673985 +0800
Modify: 2022-05-12 12:06:10.353673985 +0800
Change: 2022-05-12 12:06:10.354674485 +0800
Birth: -
[root@ahui ~]#echo hehe >> test.txt
[root@ahui ~]#stat test.txt
File: ‘test.txt’
Size: 17 Blocks: 8 IO Block: 4096 regular file
Device: 803h/2051d Inode: 33588714 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2022-05-12 12:06:10.353673985 +0800
Modify: 2022-05-12 12:07:09.796945181 +0800
Change: 2022-05-12 12:07:09.796945181 +0800
第三个:属性修改时间:
[root@ahui ~]#chmod +x test.txt
[root@ahui ~]#ll
total 4
drwxr-xr-x 3 root root 18 May 12 11:17 ahui
-rwxr-xr-x 1 root root 17 May 12 12:07 test.txt
[root@ahui ~]#stat test.txt
File: ‘test.txt’
Size: 17 Blocks: 8 IO Block: 4096 regular file
Device: 803h/2051d Inode: 33588714 Links: 1
Access: (0755/-rwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2022-05-12 12:06:10.353673985 +0800
Modify: 2022-05-12 12:07:09.796945181 +0800
Change: 2022-05-12 12:08:54.748001786 +0800
find按照时间进行查找文件:
-mtime 修改时间
-atime 访问时间
-ctime 属性修改时间
#查找7天前被修改的文件和目录
find ./ -mtime +7
#查找7天以内被修改的文件和目录
find ./ -mtime -7
-mtime 0 表示最近24小时修改的文件
-mtime 1 表示一天前修改的文件
-mtime +1表示修改时间大于1天前
-mtime -1表示修改时间小于1天
案例:查找/data目录下文件修改时间30天前的 并且删除 或者备份
find /data -type f -mtime +30|xargs rm
find /data -type f -mtime +30|xargs tar zcvf backup.tar.gz
扩展:
xagrs
xargs 可以将前面的执行结果放在命令的最后面
xargs 可以格式化输出内容 可以按照n列进行显示内容
[root@ahui ~]#echo {1..20}|xargs -n7
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20
查看系统inode号:
每个文件最少占用1个inode和1个block硬件存储快
df -i 查看系统所有的inode号
[root@ahui ~]#df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sda3 9858560 69968 9788592 1% /
企业案例: 通过inode查找特殊符号的文件(在工作中遇到会解决)
[root@ahui ~]#ll -i
total 0
33603850 -rw-r--r-- 1 root root 0 May 13 14:29 !-&.txt
[root@ahui ~]#find ./ -type f -inum 33603850
./!-&.txt
[root@ahui ~]#find ./ -type f -inum 33603850|xargs rm
小结:
1.特殊符号; && ||
- ; 命令分隔符
- && 与 前面的命令执行成功 才执行&& 后面的命令
- || 或 前面的命令执行失败 才执行||后面的命令
- 文件属性(2) 文件权限、selinux相关 .
- rwx含义
- selinux生成属性 .
- 文件打包压缩: tar
参数:
- z # 使用gzip方式进行压缩
- c # 使用create创建压缩包
- v # 显示压缩的过程 verbose 可以省略
- f # 指定文件
- x # 表示解压 使用xf进行解压
- t # 查看压缩的里面的文件名称 使用tf进行查看
- C # 指定解压到哪个位置(默认解压到当前路径)
- tar zcvf all.tar.gz file1 file2 相对路径 不会提示从成员中删除/跟目录
- 打包文件放在指定的路径 tar zcvf /opt/all.tar.gz file1 file2
- 解压 tar xf all.tar.gz
- 指定解压的位置 tar xf all.tar.gz -C /opt
- 查看压缩包 tar tf all.tar.gz
- 硬链接 软链接特点与区别
- 文件时间:
- 修改时间
- 访问时间
- 属性修改时间
- find 按照时间查找
- -mtime______修改时间
- -atime_______访问时间
- -ctime_______属性修改时间
- +n__________表示修改时间大于n天前
- -n__________表示修改时间小于n天
- 0___________表示最近24小时修改的文件
- n___________表示n天前修改的文件