01.知识点回顾
文件的详细属性
1.inode号->磁盘
1.df -i ->inode内存
2.df -h ->磁盘内存
2.文件的属性
- 普通文件
d 目录
l 软连接->win的快捷方式
c 字节文件->win驱动文件
b 硬件
/dev/null
$? 判断上一条命令执行结果
/dev/zero
3.权限
rwxrwxrwx
r 读
w 写
x 执行
4.硬链接
5.属主
6.属组
7.文件大小
8.时间
9.文件名
find搜索文件
find 路径 类型 名称
find ./ -type f
d
-name "1.txt"
-size 10M
+10M
-10M
-maxdepth 1 f
find ./ -name "1.txt"|xargs ls -l
find ./ -name "1.txt" -exec cp {} /opt/ \;
mv `find ./ -name "1.txt"` /opt/
rm $(find ./ -name "1.txt")
02.文件硬链接
硬链接的特点:
1.inode号码相同互为硬链接
2.通过ln 源文件 目标文件
3.目录不能做硬链接
4.目录不能跨文件系统(磁盘)
5.目录可以软链接
6.删除一个不影响其他的文件(门)
7.目录的硬链接个数为2
创建硬链接:
语法结构: 使用绝对路径链接
ln 源文件 目标文件
ln a.txt b.txt
带路径:
ln a.txt /opt/b.txt
绝对路径:
ln /root/a.txt /opt/b.txt
第一步: 有一个存在的文件 123 a.txt
第二步: ln a.txt b.txt--->对应的inode123
[root@oldboy:~]# ll -i
total 0
67161164 -rw-r--r-- 2 root root 0 Jul 10 16:37 a.txt
67161164 -rw-r--r-- 2 root root 0 Jul 10 16:37 b.txt
[root@oldboy:~]# cat a.txt
[root@oldboy:~]# cat b.txt
[root@oldboy:~]# echo hehe > a.txt
[root@oldboy:~]# ll -i
total 8
67161164 -rw-r--r-- 2 root root 5 Jul 10 16:48 a.txt
67161164 -rw-r--r-- 2 root root 5 Jul 10 16:48 b.txt
[root@oldboy:~]# cat b.txt
hehe
[root@oldboy:~]# echo aaaa >>b.txt
[root@oldboy:~]# cat a.txt
hehe
aaaa
[root@oldboy:~]# cat b.txt
hehe
aaaa
作用: 实时备份同步文件
#目的,/etc/hosts发生变化,/opt/hosts.bak同时会发生变化
ln /etc/hosts /opt/hosts.bak
ln /opt/hosts.bak /etc/hosts # 如果误删,则链接回去
02.文件软链接
特点:
1.inode不同
2.类似windows的快捷方式,通过快捷方式找到源文件
3.软链接文件存放着是源文件的指针指向
4.目录可以软链接
5.软链接可以跨文件系统(磁盘)
6.删除软链接不影响源文件
7.删除源文件,影响链接文件,链接文件变红
创建软链接:
语法结构:
ln -s a.txt b.txt
ln -s /root/a.txt /opt/b.txt
作用: 解决磁盘不够用
代码变更(后面学习)
面试题: 软链接和硬链接的区别
1.硬链接inode号相同
2.软链接inode号不同
3.目录不能做硬硬链接,文件可以做硬链接,目录可以做软链接
4.硬链接不能跨文件系统,软链接可以跨文件系统
5.创建方式不同,ln 软 ln -s
6.目录默认硬链接数,文件默认硬链接数是1
7.删除硬链接不影响其他硬链接,删除软链接不影响源文件,删除源文件影响软链接变红。
8.链接数为0,和文件不被进程所占用,文件才真正的被删除。
9.硬链接和软链接都是普通文件,使用rm删除
inode号码
目录和文件做软硬链接的区别
跨系统的区别
删除的区别
/etc/hosts ------> 1周备份--------->备份服务器
安装软件软链接: 后面使用
/user/log/maven-1.0.45-v1.0-111 ---->命令 maven-1.0.45-v1.0-111/bin/mvn conf
ln -s /usr/log/maven-1.0.45-v1.0-111 /usr/local/maven
04.文件时间
Access: 文件访问时间 less cat more vim
Modify: 文件修改时间 echo sed
Change: 文件属性改变时间 chmod
05.find 按照时间查找
案例1: 查找7天前被修改过的文件
[root@oldboy:test]# date -s 20081010
Fri Oct 10 00:00:00 CST 2008
[root@oldboy:test]# touch {1..4}.txt
[root@oldboy:test]# ll
total 0
-rw-r--r-- 1 root root 0 Oct 10 00:00 1.txt
-rw-r--r-- 1 root root 0 Oct 10 00:00 2.txt
-rw-r--r-- 1 root root 0 Oct 10 00:00 3.txt
-rw-r--r-- 1 root root 0 Oct 10 00:00 4.txt
[root@oldboy:test]# ntpdate ntp2.aliyun.com
查找时间:
[root@oldboy:test]# find ./ -mtime +7
./1.txt
./2.txt
./3.txt
./4.txt
案例2: 查找7天内被修改的文件
[root@oldboy:test]# find ./ -mtime -7
./
./a.log
./b.log
./c.log
案例3.查找1天内被修改过的文件
[root@oldboy:test]# find ./ -mtime 0
./
./a.log
./b.log
./c.log
笔试题: 查找出/data目录30天前被修改过的文件,然后删除。
find /data -mtime +30|xargs rm -rf
[root@oldboy:test]# find ./ -mtime +30
./1.txt
./2.txt
./3.txt
./4.txt
[root@oldboy:test]# find ./ -mtime +30|xargs rm -rf
[root@oldboy:test]# ll
total 0
-rw-r--r-- 1 root root 0 Jul 11 10:33 a.log
-rw-r--r-- 1 root root 0 Jul 11 10:33 b.log
-rw-r--r-- 1 root root 0 Jul 11 10:33 c.log
06.打包压缩
tar
语法结构:
tar 参数选项 包的名称 文件1 文件2
tar 参数选项 框子 香蕉 黄瓜 茄子
tar zcvf test.tar.gz 文件/目录
-z 使用gzip打包
-c create 创建
-v verbose 显示过程
-f 指定文件名称
简写: -zcf
解压缩:
xf 解压压缩包
-C 指定解压到哪个目录
扩展:
tf 查看压缩包
--exclude=file # 排除文件
为什么压缩打包?
1.节省空间
2.方便备份传输 节省网络带宽
3.减少磁盘IO
环境准备:
[root@oldboy:test]# ll
total 0
-rw-r--r-- 1 root root 0 Jul 11 10:33 a.log
-rw-r--r-- 1 root root 0 Jul 11 10:33 b.log
-rw-r--r-- 1 root root 0 Jul 11 10:33 c.log
案例1.打包当前的a.log 为test.tar.gz
[root@oldboy:test]# tar zcvf test.tar.gz a.log
a.log
[root@oldboy:test]# ll
total 4
-rw-r--r-- 1 root root 0 Jul 11 10:33 a.log
-rw-r--r-- 1 root root 0 Jul 11 10:33 b.log
-rw-r--r-- 1 root root 0 Jul 11 10:33 c.log
-rw-r--r-- 1 root root 108 Jul 11 11:09 test.tar.gz
案例2.打包a b c .log 三个文件为all.tar.gz
[root@oldboy:test]# tar zcvf all.tar.gz a.log b.log c.log
a.log
b.log
c.log
[root@oldboy:test]# ll
total 8
-rw-r--r-- 1 root root 125 Jul 11 11:10 all.tar.gz
或者用*
[root@oldboy:test]# tar zcvf all.tar.gz *.log
案例3.打包压缩目录 /etc/目录 为etc.tar.gz
[root@oldboy:test]# tar zcvf etc.tar.gz /etc
案例4.打包多个目录 oldboy test
[root@oldboy:test]# mkdir oldboy test
[root@oldboy:test]# tar zcvf dir.tar.gz oldboy/ test
oldboy/
test/
[root@oldboy:test]# ll
-rw-r--r-- 1 root root 126 Jul 11 11:12 dir.tar.gz
案例5.尽量到相对路径在打包,打包/etc/hosts /etc/passwd
[root@oldboy:~]# tar zcvf h.tar.gz /etc/hosts
tar: Removing leading `/' from member names
/etc/hosts
[root@oldboy:~]# ll
total 8
-rwxr-xr-x 1 root root 12 Jul 10 18:09 a.txt
-rw-r--r-- 1 root root 168 Jul 11 11:13 h.tar.gz
drwxr-xr-x 4 root root 144 Jul 11 11:12 test
[root@oldboy:~]# cd /etc/
[root@oldboy:etc]# tar zcvf h.tar.gz hosts passwd
hosts
passwd
[root@oldboy:etc]# ll h.tar.gz
-rw-r--r-- 1 root root 950 Jul 11 11:15 h.tar.gz
案例6.打包a.txt文件为a.tar.gz 放在/opt/目录下
[root@oldboy:~]# ll
total 8
-rwxr-xr-x 1 root root 12 Jul 10 18:09 a.txt
-rw-r--r-- 1 root root 168 Jul 11 11:13 h.tar.gz
drwxr-xr-x 4 root root 144 Jul 11 11:12 test
打包
[root@oldboy:~]# tar zcvf /opt/a.tar.gz a.txt
a.txt
查看/opt目录
[root@oldboy:~]# ll /opt/
total 4
-rw-r--r-- 1 root root 0 Jul 10 15:53 1.txt
-rw-r--r-- 1 root root 121 Jul 11 11:20 a.tar.gz
-rw-r--r-- 1 root root 0 Jul 10 16:00 a.txt
解压缩:
案例1.解压c.tar.gz到当前的目录
[root@oldboy:~]# rm -f a.txt
[root@oldboy:~]# tar xf c.tar.gz
[root@oldboy:~]# ll
total 24
-rwxr-xr-x 1 root root 12 Jul 10 18:09 a.txt
案例2.解压/opt/a.tar.gz 到当前的目录
[root@oldboy:~]# ll
total 0
drwxr-xr-x 4 root root 144 Jul 11 11:12 test
[root@oldboy:~]# ll /opt/a.tar.gz
-rw-r--r-- 1 root root 121 Jul 11 11:20 /opt/a.tar.gz
解压:
[root@oldboy:~]# tar xf /opt/a.tar.gz # 直接回车默认解压到当前的位置
案例3.解压test目录下的all.tar.gz 到/opt
[root@oldboy:~]# ll test/all.tar.gz
-rw-r--r-- 1 root root 125 Jul 11 11:10 test/all.tar.gz
[root@oldboy:~]# rm -rf /opt/*
[root@oldboy:~]# ll /opt/
total 0
方法1:
[root@oldboy:~]# cd /opt/
[root@oldboy:opt]# tar xf /root/test/all.tar.gz
[root@oldboy:opt]# ll
total 0
-rw-r--r-- 1 root root 0 Jul 11 10:33 a.log
-rw-r--r-- 1 root root 0 Jul 11 10:33 b.log
-rw-r--r-- 1 root root 0 Jul 11 10:33 c.log
方法2: 使用参数-C 指定解压的位置
[root@oldboy:~]# tar xf test/all.tar.gz -C /opt/
[root@oldboy:~]# ll /opt/
total 0
-rw-r--r-- 1 root root 0 Jul 11 10:33 a.log
-rw-r--r-- 1 root root 0 Jul 11 10:33 b.log
-rw-r--r-- 1 root root 0 Jul 11 10:33 c.log
案例4.查看压缩包内的文件
[root@oldboy:~]# tar tf test/all.tar.gz
a.log
b.log
c.log
[root@oldboy:~]# tar tf test/dir.tar.gz
oldboy/
test/
centos排除文件打包:
[root@linuxnc oldboy]# touch a.txt b.txt c.txt
[root@linuxnc oldboy]# ll
total 0
-rw-r--r-- 1 root root 0 Jul 11 11:36 a.txt
-rw-r--r-- 1 root root 0 Jul 11 11:36 b.txt
-rw-r--r-- 1 root root 0 Jul 11 11:36 c.txt
[root@linuxnc oldboy]# tar zcvf all.tar.gz *.txt --exclude=c.txt
a.txt
b.txt
[root@linuxnc oldboy]# tar tf all.tar.gz
a.txt
b.txt
tar 重点:
打包:
tar -zcvf test.tar.gz file1 file /etc/hosts
tar -zcvf /opt/test.tar.gz file1 /etc/hosts
解压:
tar xf test.tar.gz 解压到当前的目录
tar xf /opt/test.tar.gz 解压到当前的目录
tar xf test.tar.gz -C /opt 指定解压到/opt目录
07.zip 打包压缩
打包压缩:
语法结构:
压缩打包: zip all.zip file1 file2
压缩包的位置: zip /opt/all.zip file1 file2
解压: unzip all.zip
指定位置解压: unzip all.zip -d /opt/
案例1.打包所有的文件为all.zip
[root@oldboy:~]# zip all.zip *.txt
[root@oldboy:~]# ll
total 4
-rw-r--r-- 1 root root 0 Jul 11 11:47 1.txt
-rw-r--r-- 1 root root 0 Jul 11 11:47 2.txt
-rw-r--r-- 1 root root 0 Jul 11 11:47 3.txt
-rw-r--r-- 1 root root 0 Jul 11 11:47 4.txt
-rw-r--r-- 1 root root 574 Jul 11 11:47 all.zip
案例2.打包1.txt为test.zip 后放在/opt目录
[root@oldboy:~]# zip /opt/test.zip 1.txt
adding: 1.txt (stored 0%)
[root@oldboy:~]# ll /opt/
total 4
-rw-r--r-- 1 root root 160 Jul 11 11:49 test.zip
案例3.解压all.zip到当前目录
[root@oldboy:~]# rm -rf *.txt
[root@oldboy:~]# ll
total 4
-rw-r--r-- 1 root root 574 Jul 11 11:47 all.zip
[root@oldboy:~]# unzip all.zip
Archive: all.zip
extracting: 1.txt
extracting: 2.txt
extracting: 3.txt
extracting: 4.txt
[root@oldboy:~]# ll
total 4
-rw-r--r-- 1 root root 0 Jul 11 11:47 1.txt
-rw-r--r-- 1 root root 0 Jul 11 11:47 2.txt
-rw-r--r-- 1 root root 0 Jul 11 11:47 3.txt
-rw-r--r-- 1 root root 0 Jul 11 11:47 4.txt
-rw-r--r-- 1 root root 574 Jul 11 11:47 all.zip
案例4.解压all.tar.gz 到/tmp目录下
[root@oldboy:~]# unzip all.zip -d /tmp/
08.特殊符号
; 命令的分隔符 不管前面的命令执行是否成功,都会继续往后执行
[root@oldboy:~]# touc 1.txt;mkdir oldboy;ls -l
-bash: touc: command not found
total 0
drwxr-xr-x 2 root root 6 Jul 11 11:53 oldboy
&& 命令的分隔符 前面的命令必须执行成功,才会执行后面的命令
[root@oldboy:~]# touc 1.txt && mkdir oldboy && ls -l
-bash: touc: command not found
[root@oldboy:~]# touch 1.txt && mkdir oldboy && ls -l
total 0
-rw-r--r-- 1 root root 0 Jul 11 11:55 1.txt
drwxr-xr-x 2 root root 6 Jul 11 11:55 oldboy
ifdown ens33 && ifup ens33
|| 命令的分隔符 前面的命令必须执行失败,才会执行后面的命令
[root@oldboy:~]# touc 1.txt || mkdir oldboy
-bash: touc: command not found
[root@oldboy:~]# ll
total 0
drwxr-xr-x 2 root root 6 Jul 11 11:56 oldboy
目录不存在则创建:
[root@oldboy:~]# cd oldboy || mkdir oldboy
-bash: cd: oldboy: No such file or directory
[root@oldboy:~]# ll
total 0
drwxr-xr-x 2 root root 6 Jul 11 11:57 oldboy
知识点小结:
重点:
1.软硬链接如何创建
ln 硬
ln -s 软
2.软链接和硬链接区别
3.find按照时间查找出30天前的修改过的文件然后删除 -mtime
4.tar打包解压
5.zip打包解压
6.特殊符号 ; && || shell编程使用。