Linux文件归档管理
Linux怎样保存文件
数据
- 这里数据就是文件的内容
元数据
- 在linux系统中,所有与某个文件相关的额外信息都保存在一个叫做i-节点(inode)的结构中
文件名
- 文件名保存在名为目录项(dentry)的结构中
i-节点
所有文件都有如下的属性:
文件类型、链接数、用户所有者、组所有者、权限和时间信息。这种信息保存在名为i-节点的结构中。
链接数
i-节点记录文件的链接数,也就是引用该文件的目录项(dentry)数。通常常规文件只有一个文件名,链接数也是1
时间信息
每个i-节点保存与文件相关的三种时间信息,通常叫做atime、ctime、mtime,含义如下:
缩写 |
名称 |
目的 |
atime |
访问时间 |
文件数据每次被阅读后更新 |
ctime |
改变时间 |
文件的i-节点信息每次被改变后都会更新 |
mtime |
修改信息 |
文件数据每次被更改后更新 |
用stat命令查看i-节点的信息
一个文件的i-节点信息集合叫做该文件的状态(startus)。
我们可以把stat命令看作是现实文件状态的命令。
用法:
stat [option ] file
一个文件系统内,每个i-节点都分配到一个独一无二的i-节点编号
硬链接和软连接
硬链接:
将多项目录项关联到一个i-节点(同一个文件保存在两个地方或不同的文件名)
ln 目标文件 链接文件
软连接:是一些不同的i-节点,用来引用其他文件名。
ln -s 目标文件 链接文件
查找文件find命令
用法:
find {搜索目录} {搜索条件} [动作]
搜索条件:
-size n 文件的大小
-type 文件的类型(f普通、d目录、i软连接)
-name:按照文件名查找文件。支持统配符*和?。
-user: 按照文件属主来查找文件。
-group:按照文件所属的组来查找文件。
-mtime n:按照文件的更改时间来查找文件。
-atime n:搜索在过去n天读取过的文件。
-ctime n:搜索在过去n天修改过的文件。
- n表示文件更改时间距现在n天以内,+ n表示文件更改时间距现在n天以前
有时间有关选项:共有 -atime, -ctime -mtime ,以 -mtime 说明
-mtime n :n 为数字,意义为在 n 天之前的『一天之内』被更改过内容的文件;
-mtime +n :列出在 n 天之前(不含 n天本身)被更改过内容的文件名;
-mtime -n :列出在 n 天之内(含n 天本身)被更改过内容的文件名。
-print:输出搜索结果,并且打印
find命令查找文件的几种方法:
(1)根据文件名查找
例如,我们想要查找一个文件名是lilo.conf的文件,可以使用如下命令:
find / -name lilo.conf
find命令后的“/”表示搜索整个硬盘。
(2)快速查找文件
根据文件名查找文件会遇到一个实际问题,就是要花费相当长的一段时间,特别是大型Linux文件系统和大容量硬盘文件放在很深的子目录中时。如果我们知道了这个文件存放在某个目录中,那么只要在这个目录中往下寻找就能节省很多时间。比如smb.conf文件,从它的文件后缀“.conf”可以判断这是一个配置文件,那么它应该在/etc目录内,此时可以使用下面命令:
find /etc -name smb.conf
这样,使用“快速查找文件”方式可以缩短时间。
(3)根据部分文件名查找方法
有时我们知道只某个文件包含有abvd这4个字,那么要查找系统中所有包含有这4个字符的文件可以输入下面命令:
find / -name '*abvd*'
输入这个命令以后,Linux系统会将在/目录中查找所有的包含有abvd这4个字符的文件(其中*是通配符),比如abvdrmyz等符合条件的文件都能显示出来。
(4) 使用混合查找方式查找文件
find命令可以使用混合查找的方法,例如,我们想在/etc目录中查找大于500000字节,并且在24小时内修改的某个文件,则可以使用-and (与)把两个查找参数链接起来组合成一个混合的查找方式。
find /etc -size +500000c -and -mtime +1
动作:
-exec command; 对匹配文件执行command,用{}表示匹配的文件。命令形式为:
' command' {} \;,注意{ }和\;之间的空格。
-ok command; 与-exec相同,但是提示确认没个文件的操作
用法:找出名字为1.txt文件 并且用长格式输出:
find /root -name 1.txt -exec ls -l {} \;