linuxOPS系统服务_linux高级命令

find命令

find 路径 [选项 选项的值] …

选项 作用
-name 根据文件的名称进行
-type 按文件类型进行搜索,f代表普通文件,d代表文件夹

find命令查找文件

示例1 查找一个文件

案例1 ,在linux整个系统中查找 test.txt文件

find / -name 'test.txt' -type f

在这里插入图片描述
案例2 在当前目录下,查找名为test.txt

find  -name 'test.txt' -type f
# 当不填选路径时,默认为当前文件夹下即./
或
find  ./ -name 'test.txt' -type f

在这里插入图片描述

find命令+模糊搜索

# find 路径 -name “通配符*” -type f/-type d

示例2 使用find进行模糊查找

案例 在linux根目录下查找以.conf为结尾的文件

find / -name '*.conf' -type f

linuxOPS系统服务_linux高级命令_第1张图片

根据文件修改时间搜索文件

# find 路径 -mtime +days或-days

聊一下Windows中的文件时间概念?
在这里插入图片描述

  • 创建时间:代表这个文件什么时间被创建

  • 访问时间:代表这个文件什么时间被访问

  • 修改时间:代表这个文件什么时间被修改

linux也一样

linux中 使用stat命令获取文件的最后修改时间
# stat 文件名称

linuxOPS系统服务_linux高级命令_第2张图片

创建文件时设置修改时间以及修改文件的修改时间

基本语法:

# touch -m -d "日期时间格式" 文件名称

作用:① 如果文件不存在,则自动创建该文件,然后设置其最后的修改时间

​ ② 如果文件存在,touch命令就是只修改文件的最后修改时间

案例:创建一个a.txt文件,设置最后修改时间为2020-03-30 00:00

touch -m -d '2020-03-30 00:00' a.txt

linuxOPS系统服务_linux高级命令_第3张图片

创建一个b.txt文件,然后在设置文件的最后修改时间为2020-03-29 00:00
touch b.txt
touch -m -d "2020-03-29 00:00" b.txt

linuxOPS系统服务_linux高级命令_第4张图片

根据文件的最后修改时间搜索文件

# find 搜索路径 -mtime +days/-day3

选项 作用
-mtime 根据文件的最后修改时间搜索文件
+ 加号,代表搜索几天之前的文件信息
- 减号,代表搜索几天以内的文件信息
示例 搜索3天以前的文件信息(不包含第3天的,而且只搜索.txt格式)

linuxOPS系统服务_linux高级命令_第5张图片

find ./ -name "*.txt" -mtime +3

linuxOPS系统服务_linux高级命令_第6张图片

案例:搜索3天以内的文件信息(只搜索.txt格式)

在这里插入图片描述

 find ./ -name "*.txt" -mtime -3

扩展选项-exec选项

案例:删除Linux系统中/var/log目录下10天以前的日志信息(日志文件格式*.log结尾)

首先把十天前的日志信息都查出来

find /var/log -name "*.log" -mtime +10

使用管道命令| 将查找的日志信息传递给rm删除

find /var/log -name "*.log" -mtime +10 |rm -rf

但是这条命令并不能正确的删除掉这些日志信息,因为rm与ls命令一样,并不支持管道符
linuxOPS系统服务_linux高级命令_第7张图片

第一种解决方案:使用xargs连接符
find /var/log -name "*.log" -mtime +10 |xargs rm -rf

在这里插入图片描述
如上再找就找不到日志文件了,说明删除干净了

第二种方法:使用find命令 + -exec选项
find /var/log -name "*.log" -mtime +10 -exec rm -rf {} \;

根据文件的大小搜索文件

在这之前,先介绍一个别的命令,就是dd,dd用于生成一个指定大小的测试文件
其语法简略\为

dd if=/dev/zero of=文件名 bs=文件大小 count=生成文件数

如下,使用dd生成一个1m的测试文件
dd if=/dev/zero of=sun.txt bs=1M count=1
在这里插入图片描述

那现在可以开始转回正题了
根据文件的大小搜索文件

# find 搜索路径 -size [文件大小,常用单位:k,M,G]
size值 : 搜索等于size值大小的文件
-size值 : [0, size值)
+size值 : (size值,正无穷大)

搜索/root目录下大小为5M的文件信息
find ./ -type f -size 5M

在这里插入图片描述
案例:搜索/root目录下大小为5M以内的文件信息(5M>size>=0)

find ./ -type f -size -5M

linuxOPS系统服务_linux高级命令_第8张图片

案例:搜索/目录中,文件大小大于100M的文件信息(size>100M)

find / -type f -size +100M

linuxOPS系统服务_linux高级命令_第9张图片

tree 命令

Windows和Linux都有tree命令,主要功能是创建文件列表,将所有文件以树的形式列出来

使用yum命令安装tree

yum install tree -y

linuxOPS系统服务_linux高级命令_第10张图片

案例:以树状结构显示/var/log目录下的文件信息

tree /var/log

linuxOPS系统服务_linux高级命令_第11张图片

scp命令

scp命令的主要作用是实现Linux与Linux系统之间的文件传输。
完成以上实战需要两个Linux系统

scp效果图

linuxOPS系统服务_linux高级命令_第12张图片

scp传输要求:两台计算机所使用的操作系统都必须是Linux操作系统。

ssh: connect to host 10.1.1.17 port 22: Connection refused
lost connection

出现以上问题的主要原因在于SCP命令时基于SSH协议,所以两台服务器的sshd服务必须处于开启状态,否则无法完成上传与下载操作。

下载文件或目录

scp [选项] 用户名@linux主机地址:资源路径  linux本地文件路径
选项说明:
-r :代表递归操作,主要针对文件夹

案例:从192.168.110.162服务器下载/root路径下的test.txt文件到本地的/root目录下

scp root@192.168.110.162:/root/sun.txt /root

linuxOPS系统服务_linux高级命令_第13张图片

上传文件或目录

scp [选项] linux本地文件路径 用户名@linux主机地址:远程路径
选项说明:
-r :递归操作

案例:把192.168.159.139服务器上的/root/ssss文件夹上传到192.168.110.162服务器的/root目录下

scp -r /root/ssss root@192.168.110.162:/root/

linuxOPS系统服务_linux高级命令_第14张图片

计划任务+tar命令实现文件

基本语法:

crontab [选项]
-l : list缩写,查询当前用户的计划任务信息
-e : edit缩写,编辑计划任务

计划任务格式

分 时 日 月 周 执行的命令(要求使用完整路径,which命令)
linuxOPS系统服务_linux高级命令_第15张图片

周的范围比较特殊,正常情况下,只有周一 ~ 周日 1-7,但是计划任务范围0-7,0和7都代表周日

案例

每天的凌晨2点0分把/etc目录备份一次/tmp目录下,要求把/etc打包成etc.tar.gz格式

crontab -e
分 时 日 月 周 /usr/bin/tar -zcf /tmp/etc.tar.gz /etc
0 2 * * * /usr/bin/tar -zcf /tmp/etc.tar.gz /etc

以上案例虽然可以实现对/etc目录的备份,但是有一个小缺点:每次备份时,生成的文件名称是一致的,这样后面备份的文件就会把前面备份的文件进行覆盖!

案例:备份文件时,要求按时间作为备份文件的名称

/tmp/etc-20200331.tar.gz

/tmp/etc-20200401.tar.gz

# crontab -e
0 2 * * * /usr/bin/tar -zcf /tmp/etc-$(date +"\%Y\%m\%d").tar.gz	/etc

重点:
/tmp/etc-$(date +"\%Y\%m\%d").tar.gz

如果在编写计划任务时,出现了%百分号,前面必须添加一个反斜杠\进行转义,否则计划任务会失效!

扩展命令:date

 date +"时间格式"
%F : 年--%T : 小时:分钟:秒
%Y : Year,%m : month,%d : day,%H : Hour,小时
%M : Minute,分钟
%S : Second,

案例:获取计算机的系统时间

 date

你可能感兴趣的:(linuxOPS,linux,运维,服务器)