day06

一、find命令

1.find 命令概述:

find 命令是一种用于在 Linux 系统中执行文件搜索操作的实用工具。

2.基本语法:

find [文件路径] [选项 选项的值]
常用选项包括:
-name: 用于按文件名搜索文件,支持通配符 *。
-type: 指定要搜索的文件类型,"f" 代表普通文件,"d" 代表目录。

3.示例:

查找名为 httpd.conf 的文件:
find / -name "httpd.conf" -type f
在未找到文件的情况下,发现可以安装 httpd 服务来解决:
yum install -y httpd
安装 httpd 服务后再次查找 httpd.conf 文件:
find / -name "httpd.conf" -type f
下面是查找到的文件:
/etc/httpd/conf/httpd.conf
/usr/lib/tmpfiles.d/httpd.conf
为提高效率并节省计算资源,将搜索范围缩小至 /etc/ 目录:
find /etc/ -name "httpd.conf" -type f
最终找到的文件为:
/etc/httpd/conf/httpd.conf

4.通配符应用:

在 Linux 系统中,通配符 * 可以用于部分匹配文件名,用法如下:
查找以 .conf 结尾的文件:
find /etc/ -name "*.conf" -type f
搜索文件名以 http 开头的文件:
find /etc/ -name "http*" -type f

二、创建并设置文件最后修改的时间

文件时间概念:

在Windows中,文件有三个重要的时间属性:
创建时间(Creation Time)
修改时间(Modified Time)
访问时间(Accessed Time)

使用 stat 命令可以获取文件的时间信息:
stat 文件
案例:创建文件并设置修改时间:
使用 touch -m -d 日期时间格式 文件名称 命令来配置文件的修改时间。
如果文件不存在,则创建文件并设置修改时间。
如果文件存在,则只修改最后修改时间。

三、基于文件最后修改时间执行文件搜索 

利用文件的最后修改时间进行文件搜索

搜索语法:

find 文件路径 -mtime +days/-days
-mtime 用于根据文件的最后修改时间进行文件搜索:
+:表示搜索几天之前的文件信息
-:表示搜索几天之内的文件信息
示例:搜索三天之前的文件信息,排除第三个文件,并且只搜索文件扩展名为txt的文件。
进一步编辑
进一步编辑
搜索包含今天在内的三天内修改过的.txt文件
进一步编辑

四、通过find命令的exec选项

示例:删除系统中/var/log/目录中10天前的日志文件,这些文件都是以.log扩展名结尾
方法1:报错,因为rm不支持这种语法
编辑
方法2:rm和ls不支持管道操作
编辑
方法3:采用xargs命令将查询结果传递给rm,这种方法可行
语法:find 文件路径

#检查目录中的txt文件
[root@localhost opt]# ls -l *.txt
#e.txt文件不存在,表示之前已被删除
-rw-r--r--. 1 root root 0 7月 14 13:54 a.txt
-rw-r--r--. 1 root root 0 7月 13 00:00 b.txt
-rw-r--r--. 1 root root 0 7月 12 00:00 c.txt
-rw-r--r--. 1 root root 0 7月 11 00:00 d.txt
# 创建文件并设置修改日期
[root@localhost opt]# touch -m -d "2024-7-10 00:00" e.txt
[root@localhost opt]# ls -l
总计 0
-rw-r--r--. 1 root root 0 7月 14 13:54 a.txt
-rw-r--r--. 1 root root 0 7月 13 00:00 b.txt
-rw-r--r--. 1 root root 0 7月 12 00:00 c.txt
-rw-r--r--. 1 root root 0 7月 11 00:00 d.txt-rw-r--r--. 1 root root 0 7月 10 00:00 e.txt
# 查找三天前的文件
[root@localhost opt]# find /opt/ -name "*.txt" -type f -mtime +3
/opt/e.txt
# 使用-exec执行rm命令,{}表示find查找到的内容,;是终止符
# 这里在{}后没有空格会报错,应在{}后添加空格
[root@localhost opt]# find /opt/ -name "*.txt" -type f -mtime +3 -exec rm -
rf {};
find: 丢失"-exec"参数
[root@localhost opt]# find /opt/ -name "*.txt" -type f -mtime +3 -exec rm -
rf {} ;
总计 0
-rw-r--r--. 1 root root 0 7月 14 13:54 a.txt
-rw-r--r--. 1 root root 0 7月 13 00:00 b.txt
-rw-r--r--. 1 root root 0 7月 12 00:00 c.txt
-rw-r--r--. 1 root root 0 7月 11 00:00 d.txt

五、用于快速生成指定大小的文件

1.dd命令生成文件: 使用dd命令,可按照以下语法创建特定大小的文件:
dd if=/dev/zero of=文件名称 bs=1M count=1
if:表示输入文件。
of:表示输出文件。
bs:指定以字节为单位的块大小。
count:指定被复制的块数量。 在这里,/dev/zero是一个字符设备,会持续返回0字节的内容。
2.查看文件信息:
查看文件信息时,可以使用ls -l命令以字节为单位查看文件大小。
默认情况下,使用ls -lh命令以人类可读的方式显示文件  小。
3.生成指定大小文件案例:
创建一个1MB大小的文件:dd if=/dev/zero of=a.txt bs=1M count=1。
创建其他大小的文件示例:dd if=/dev/zero of=b.txt bs=5M count=1和dd if=/dev/zero of=c.txt bs=10M count=1。
4.查找文件及文件大小:
使用ls -l命令列出文件以字节为单位的大小。
使用ls -lh命令列出文件大小。

六、根据文件大小搜索文件

基本语法及介绍:

find 文件路径 -size size值(单位 k M G)
size值可以用来搜索等于、小于或大于指定大小的文件。
-size值表示搜索小于该值的文件。
+size值表示搜索大于该值的文件。
文件大小搜索示例:
1.搜索文件大小为5M的文件:

[root@localhost opt]# find ./ -size 5M
./b.txt

2.搜索文件大小小于10M的文件:

[root@localhost opt]# find ./ -size 10M
./c.txt

3.搜索小于1M的文件,包括隐藏文件:

[root@localhost opt]# find ./ -size 1M
./
./a.txt

4.搜索文件大小大于1M的文件:

[root@localhost opt]# find ./ -size +1M
./b.txt
./c.txt

案例:搜索系统中大于100M的文件:

[root@localhost opt]# find / -size +100M
/proc/kcore
/sys/devices/pci0000:00/0000:00:0f.0/resource1_wc
/sys/devices/pci0000:00/0000:00:0f.0/resource1
/root/mysql-8.4.1-1.el7.aarch64.rpm-bundle.tar
/root/mysql-community-debuginfo-8.4.1-1.el7.aarch64.rpm
/root/mysql-community-test-8.4.1-1.el7.aarch64.rpm/var/cache/yum/x86_64/7/updates/gen/primary_db.sqlite
/usr/lib/locale/locale-archive

删除root目录下文件大于100M的文件:

[root@localhost opt]# find /root/ -size +100M -exec rm -rf {} \;
[root@localhost opt]# find / -size +100M

七、tree指令

执行tree命令 创建一个以树形式展示文件列表的方法是使用tree命令。可以通过yum指令进行安装:
[root@localhost opt]# yum -y install tree
错误提示 在尝试运行tree命令时,可能会收到"-bash: tree: 未找到命令"的错误提示,这意味着系统未找到该命令。
成功安装 通过使用yum软件包管理器,你已成功安装了tree命令,版本为1.6.0-10.el7,解决了命令未找到的问题。
演示 以下是在/var/log目录中展示文件内容的示例,以树状结构显示:
[root@localhost opt]# tree /var/log/

八、通过SCP实现Linux系统之间的克隆操作

在Linux系统中,可以利用SCP(Secure Copy Protocol)实现文件在不同Linux系统之间的传输,从而进行克隆操作。这个过程需要两台Linux系统,其中一台作为源系统,另一台作为目标系统。
克隆操作的实现可以借助SCP的高效传输功能,快速生成机器的镜像。在进行克隆操作之前,建议先将系统关机,以确保文件传输和操作的安全性。

九、使用SCP实现文件和目录的传输


在进行SCP操作时,要求涉及的两台主机系统都是Linux系统。

文件复制操作:

1.首先查看克隆机的IP地址,并清空/opt目录中的文件。
2.接着查看原主机的IP地址,并浏览/opt目录中的数据。
3.使用SCP从原主机上下载/opt/a.txt文件到克隆机的/opt目录,如果系统询问,请输入“yes”并输入密码即可。

目录复制操作:

1.在源主机的opt目录下创建一个新目录,并将a.txt、b.txt和c.txt文件复制到新目录中。
2.在克隆机上执行SCP命令,将源主机目录复制到本地的/opt目录,需要添加“-r”选项以进行递归复制,这将保留文件夹结构。
在第二次连接主机时,无需再次确认“yes”操作,直接输入密码即可。选项“-r”在这里的作用是递归地复制文件夹及其内容。

十、使用SCP上传文件

SCP上传文件的语法为:scp [选项] 本地主机资源路径 远程主机用户名@远程主机IP地址:目标路径
在以下操作中,我们将克隆机中的a.txt文件上传到源主机。
在原主机192.168.135.129上执行以下操作:

1.清空/opt目录中的文件:

[root@localhost ~]# rm -rf /opt/*
[root@localhost ~]# ls /opt/

2.通过SSH登录管理克隆机:

[root@localhost ~]# ssh -lroot -p22 192.168.135.132
(SSH连接时可能需要确认并输入密码)

3.查看克隆机的IP地址:

[root@localhost ~]# ifconfig ens33

4.将克隆机上的a.txt文件上传到源主机:

[root@localhost ~]# scp /opt/a.txt root@192.168.135.129:/opt/
(输入密码并上传文件)

5.退出SSH连接:

[root@localhost ~]# exit

6.检查源主机中是否已存在a.txt文件:

[root@localhost ~]# ls /opt/
文件上传成功后会显示a.txt。

上传目录操作:

1.再次通过SSH管理克隆机:

[root@localhost ~]# ssh -lroot -p22 192.168.135.132

2.将克隆机中的folder目录上传到源主机的/opt目录:

[root@localhost ~]# scp -r /opt/folder/ root@192.168.135.129:/opt/
(输入密码并上传目录)

3.退出SSH连接后,查看上传结果:

[root@localhost ~]# ls /opt/
上传成功后会显示a.txt和folder目录。
需要注意的是,上传文件使用SCP时需要确保SSH服务已启用,可以使用以下命令启动或停止SSH服务:
systemctl start sshd
systemctl stop sshd

十一、使用计划任务和tar结合进行文件备份

1. 计划任务

使用crontab命令来管理计划任务,常用选项包括:
-l:列出当前用户的计划任务信息
-e:编辑计划任务
在命令行中可以查看当前用户的计划任务信息:

[root@localhost ~]# crontab -l


如果没有计划任务,则会显示"no crontab for root"。
编写计划任务的格式为:
crontab 分 时 日 月 周 要使用的完整路径 which命令
其中,0和7均表示星期日。
可以使用whereis命令找到tar指令的位置,例如:

[root@localhost ~]# whereis tar

案例:每分钟将/etc目录下的文件打包保存在/tmp目录中
1.找到tar指令的路径:

[root@localhost /]# which tar
通常为/usr/bin/tar。

2.编辑计划任务:

[root@localhost /]# crontab -e
*/1 * * * * /usr/bin/tar -zcvf /tmp/etc.tar.gz /etc/

3.为了保留历史备份,可以在文件名中添加时间因素:

*/1 * * * * /usr/bin/tar -zcvf /tmp/etc-$(date "+%Y%m%d%H%M%S").tar.gz /etc

4.在脚本中出现"%"符号时,需使用转义符""进行转义:

*/1 * * * * /usr/bin/tar -zcvf /tmp/etc-$(date "+\%Y\%m\%d\%H\%M\%S").tar.gz /etc

5.查看备份文件:

[root@localhost /]# ls -l /tmp/
可以看到备份文件以当前日期和时间命名,如etc-20240714174901.tar.gz。
时间格式化输出的专业术语:
%T:输出时间,例如17:24:56
%F%T:输出日期和时间,如2024-07-1417:25:03
%F-%T:在日期和时间中添加间隔,示例为2024-07-14-17:25:11
%F %T:输出用空格分隔的日期和时间,类似2024-07-14 17:25:15
%F_%T:输出日期和时间,用下划线分隔,例如2024-07-14_17:25:29
%Y:输出年份,示例为2024
%Y%m%d:输出年月日,如20240714
%Y%m%d%H%M%S:输出年月日时分秒,例如20240714172653

十二、作业

1. 使⽤ls查看/etc/⽬录下所有的⽂件信息
2. 使⽤ls查看/etc/⽬录下名包含“a”字⺟的⽂件或者⽬录信息
3. 使⽤ls查看/etc/⽬录下以".conf"结尾的⽂件信息
4. 使⽤ls查看/etc/⽬录中以"y"字⺟开头的⽂件信息
5. find查找/var/⽬录中以“.log”⽂件
6. 在opt⽬录下创建test⽬录
7. 在test⽬录中创建abc.txt,def.txt.ghi.txt,xxx.txt.yyy.txt五个⽂件
8. 修改以上5个⽂件的最后修改时间分别为15,14,13,12,11,10⽇
9. 在test⽬录下创建a⽬录
10. 将以上5个⽂件复制⼀份到a⽬录中
11. 将a⽬录⽂件做成bak.tar.gz⽂件保存到家⽬录中
12. 使⽤find删除test⽬录下3天前的⽂件13. find删除opt⽬录下3天内的⽂件
14. find删除正好第三天的⽂件
15. 将/opt/test/a⽬录中的⽂件复制i⼀份到/opt/test/⽬录下
16. 创建⽬录/opt/test0
17. 在/opt/test0/⽬录中创建三个⽂件 a.mp4(5M),b.mp4(20M),c.mp4(80M)
18. 创建⽬录/opt/test0/b/
19. 将/op t/test0/中的⽂件复制⼀份/opt/test0/b/⽬录中
20. find查询/opt/test0/⽬录中⽂件⼤于20M的,并删除
21. find查询/opt/test0/⽬录中⽂件⼩于20M的⽂件并删除
22. find查找/opt/test0/⽬录中⽂件size为20M的⽂件并删除
23. /opt/test0/b中的⽂件复制⼀份到/opt/test0中
24. 打开新的虚拟主机
25. 将家⽬录中的bak.tar.gz⽂件上传到新主机的/opt⽬录中
26. 将新主机的/e tc/skel/⽬录下载到 当前主机的/opt⽬录中
27. 设置计划任务,每周3将/e tc/yum.repos.d/⽬录下的.repo⽂件压缩保存到tmp,在⽂件
名中添加时间戳
 1.# ls /etc/
 2.# ls /etc/*a*
 3.# ls /etc/*.conf
 4.# ls /etc/y*
 5.# find /var/ -name "*.log"
 6.# mkdir /opt/test
 7.# touch /opt/test/abc.txt
   # touch /opt/test/def.txt
   # touch /opt/test/ghi.txt
   # touch /opt/test/xxx.txt
   # touch /opt/test/yyy.txt
8.# touch -m -d "2024-7-15 00:00" /opt/test/abc.txt
   # touch -m -d "2024-7-14 00:00" /opt/test/def.txt
   # touch -m -d "2024-7-13 00:00" /opt/test/ghi.txt
   # touch -m -d "2024-7-12 00:00" /opt/test/xxx.txt
   # touch -m -d "2024-7-11 00:00" /opt/test/yyy.txt
 9.# mkdir /opt/test/a
10.# cp /opt/test/*.txt /opt/test/a/
11.# tar -zcvf ~/bak.tar.gz -C /opt/test/a
12.# find /opt/test -type f -mtime +3 -exec rm -rf {} \;
13.# find /opt -type f -mtime -3 -exec rm -rf {} \;
14.# find /opt -type f -mtime 3 -exec rm-rf {} \;
15.#cp /opt/test/a/*.txt /opt/test/
16.# mdkir /opt/test0
17.# dd if=/dev/zero of=/opt/test0/a.mp4 bs=5M count=1
    # dd if=/dev/zero of=/opt/test0/b.mp4 bs=20M count=1
    # dd if=/dev/zero of =/opt/test0/c.mp4 bs=80M count=1
18.# mkdir /opt/test0/b
19.# cp /opt/test0/*.mp4 /opt/test0/b/
20.# find /opt/test0 -size +20M -exec rm -rf {}\;
21.# find /opt/test0 -size -20M  -exec rm -rf {}\;
22.# find /opt/test0 -size 20M -exec rm-rf {}\;
23.# cp /opt/test0/b/*.mp4 /opt/test0/
24.# 
25.# scp ~/bak.tar.gz root@192.168.10.129:/opt/
26.# scp -r root@192.168.10.128:/etc/skel /opt/
27.# crontab-e
* * * * */3 /usr/bin/tar -zcvf /etc/yum.repos.d/*.repo/tmp-$(date "+\%Y\%m\%d\%H\%M\%S").tar.gz

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值