全国笔记本、surface寄修淘宝店:15weixiu.taobao.com

当前位置:IT门户网 > 系统教程 >

符号链接很容易在文件列表中通过第一个位置的 l 和引用文件的 - 符号识别出来

时间:2021-07-22    来源:IT门户网    人气:

Linux 系统上的一些文件大概呈此刻多个位置。凭据本文指示查找并识别这些“同卵双胞胎”,还可以相识为什么硬链接会如此有利。

识别利用同一个磁盘空间的文件依赖于操作文件利用沟通的 inode 这一事实。这种数据布局存储除了文件名和内容之外的所有信息。假如两个或多个文件具有差异的名称和文件系统位置,但共享一个 inode,则它们还共享内容、所有权、权限等。

这些文件凡是被称为“硬链接”,不像标记链接(即软链接)那样仅仅通过包括它们的名称指向其他文件,标记链接很容易在文件列表中通过第一个位置的 l 和引用文件的 -> 标记识别出来。

$ ls -l my*-rw-r--r-- 4 shs shs 228 Apr 12 19:37 myfilelrwxrwxrwx 1 shs shs 6 Apr 15 11:18 myref -> myfile-rw-r--r-- 4 shs shs 228 Apr 12 19:37 mytwin

在单个目次中的硬链接并不是很明明,但它仍然很是容易找到。假如利用 ls -i 呼吁列出文件并按 inode 编号排序,则可以很是容易地挑选出硬链接。在这种范例的 ls 输出中,第一列显示 inode 编号。

$ ls -i | sort -n | more ... 788000 myfile <== 788000 mytwin <== 801865 Name_Labels.pdf 786692 never leave home angry 920242 NFCU_Docs 800247 nmap-notes

扫描输出,查找沟通的 inode 编号,任何匹配城市汇报你想知道的内容。

另一方面,假如你只是想知道某个特定文件是否是另一个文件的硬链接,那么有一种要领比欣赏数百个文件的列表更简朴,即 find 呼吁的 -samefile 选项将辅佐你完成事情。

$ find . -samefile myfile./myfile./save/mycopy./mytwin

留意,提供应 find 呼吁的起始位置抉择文件系统会扫描几多来举办匹配。在上面的示例中,我们正在查察当前目次和子目次。

利用 find 的 -ls 选项添加输出的具体信息大概更有说服力:

$ find . -samefile myfile -ls 788000 4 -rw-r--r-- 4 shs shs 228 Apr 12 19:37 ./myfile 788000 4 -rw-r--r-- 4 shs shs 228 Apr 12 19:37 ./save/mycopy 788000 4 -rw-r--r-- 4 shs shs 228 Apr 12 19:37 ./mytwin

第一列显示 inode 编号,然后我们会看到文件权限、链接、所有者、文件巨细、日期信息以及引用沟通磁盘内容的文件的名称。留意,在这种环境下,链接字段是 “4” 而不是我们大概期望的 “3”。这汇报我们尚有另一个指向同一个 inode 的链接(但不在我们的搜索范畴内)。

假如你想在一个目次中查找所有硬链接的实例,可以实验以下的脚原来建设列表并为你查找副本:

#!/bin/bash#seaches for files sharing inodesprev=""# list files by inodels -i| sort -n> /tmp/$0#search through file for duplicate inode#swhile read linedoinode=`echo $line | awk '{print $1}'` if [ "$inode" == "$prev" ]; then grep$inode/tmp/$0 fiprev=$inodedone < /tmp/$0#clean uprm /tmp/$0$ ./findHardLinks 788000 myfile 788000 mytwin

你还可以利用 find 呼吁按 inode 编号查找文件,如呼吁中所示。可是,此搜索大概涉及多个文件系统,因此大概会获得错误的功效。因为沟通的 inode 编号大概会在另一个文件系统中利用,代表另一个文件。假如是这种环境,文件的其他具体信息将不沟通。

$ find / -inum 788000 -ls 2> /dev/null 788000 4 -rw-r--r-- 4 shs shs 228 Apr 12 19:37 /tmp/mycopy 788000 4 -rw-r--r-- 4 shs shs 228 Apr 12 19:37 /home/shs/myfile 788000 4 -rw-r--r-- 4 shs shs 228 Apr 12 19:37 /home/shs/save/mycopy 788000 4 -rw-r--r-- 4 shs shs 228 Apr 12 19:37 /home/shs/mytwin

留意,错误输出被重定向到 /dev/null ,这样我们就不必查察所有 “Permission denied” 错误,不然这些错误将显示在我们不答允查察的其他目次中。

另外,扫描包括沟通内容但不共享 inode 的文件(即,简朴的文本拷贝)将耗费更多的时间和精神。

总结

以上所述是小编给各人先容的Linux上的文件两全,但愿对各人有所辅佐,假如各人有任何疑问请给我留言,小编会实时回覆各人的。在此也很是感激各人对武林网网站的支持!
假如你以为本文对你有辅佐,接待转载,烦请注明出处,感谢!

相关文章

系统教程排行榜

更多>>

网络知识排行榜

更多>>

系统教程排行榜

更多>>

微信号