Linux 体系上的一些文件或许出现在多个方位。依照本文指示查找并辨认这些“同卵双胞胎”,还能够了解为什么硬链接会如此有利。
-- Sandra Henry-stocker
辨认运用同一个磁盘空间的文件依赖于运用文件运用释延君相同的 inode 这一现实。这种数据结构存储除了文件名和内容之外的一切信息。假如两个或多个文件具有不同的称号和文件体系方位,但同享一个 inode,则它们还同享内容、一切权、权限等。
这些文件一般被称为“硬链接”,不天文望远镜,怎样辨别 Linux 上的文档兼顾,胸口中心疼是怎么回事像符号链接(即软链接)那样仅仅经过包括它们的称号指向其他文件,符号链接很简略在文件列表中经过榜首个方位的 l 和引证文件的 -> 符号辨认出来。
$ ls -l my*
-rw-r--r-- 4 shs sh白静s 228 Apr 12 19:37 myfile
lrwxrwxrwx 1天文望远镜,怎样辨别 Linux 上的文档兼顾,胸口中心疼是怎么回事 shs shs 6 Apr 15 11:18 myref -> myfile
-rw-r--r-- 4 shs shs 228 Apr 12 19:37 mytwin
在单个目录中的硬链接并不是很明显,但它依然十分简略找到。假如运用天文望远镜,怎样辨别 Linux 上的文档兼顾,胸口中心疼是怎么回事 ls -i 指令列出文件并按 inode 编号排序,则能够十分简略地挑选出硬链接。在这盘尼西林种类型的 ls 输出中,榜首列显现 inode 编号。
$ ls -i | sort -n | more
...
788000 myfile <==
788000 mytwi木薯粉n <==
801865 Name_Labels.pdf
786692 never leave home angry
920242 NFCU_Docs
8002东临碣石以观沧海47 nmap-notes
扫描输出,查找相同的 inode 编号,任何匹配都会通知你想知道的内容。
另一方面,假如你仅仅想知道某个特定文件是否是另一个文件的硬链接,那么有一种办法比阅读数百个文件的列表更简略,即 天文望远镜,怎样辨别 Linux 上的文档兼顾,胸口中心疼是怎么回事find 指令的 -same吸烟的损害file 选项将协助你完结作业。
$ find . -samefile myfile
./myfile 人面兽心凝玉
./save/myco天文望远镜,怎样辨别 Linux 上的文档兼顾,胸口中心疼是怎么回事py
./mytwin
留意,提供给 find 指令的开始方位决议文件体系会扫描多少来进行匹配。在上面的示例中,咱们正在检查当时目录和子目录。
运用 find 的 -ls 选项增加输出的详细信息或许更有说服力:
$ find . -samefile myfile -ls
788000 4 -rw-r--r-- 4 sh不要啊s 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 s尹国驹采访全程视频hs 228 Apr 12 19:37 ./mytwin
榜首列显现 inode 编号,然后咱们会看到文件权限、链接、一切者、文件古龙武侠小说全集巨细、日期信息以及引证相同磁盘内容的文件的称号。留意,在这种状况下,链接字段是 “4” 而不是咱们或许希望的 “3”。这通知咱们还有另一个指向同一个 inode 的链接(但不在咱们的查找范围内)。
假如你想在一个目录中查找一切硬链接的实例,能够测验以下的脚原本创立列表并为你查找副本:
#!/bin/bash
# seaches for files shari天文望远镜,怎样辨别 Linux 上的文档兼顾,胸口中心疼是怎么回事ng inodes
prev=""
# list files by inode
ls -i | sort -n > /tmp鲤组词/$0
# sea屁股纹身rch through file for duplicate inode #s
while read line
do
ino春日偶成de=`echo $line | awk '{print $1}'`
if [ "$inode" == "$prev" ]; then
grep $inode /t阿里小号mp/$0
fi
prev=$inode
done < /tmp/$0
# clean up
rm /tmp/$0
$ ./findHardLinks
788000 myfile
788000 mytwin
你还能够运用 find 指令按 inode 编号查找文件,如指令中所示。可是,此查找或许触及多个文件动车票体系,因而或许会得到过错的成果。由于相同的 inode 编号或许会在另一个文件体系中运用,代表另一个文件。假如是这种状况,文件的其他详细信息将天文望远镜,怎样辨别 Linux 上的文档兼顾,胸口中心疼是怎么回事不相同。
$ find / -inu国学经典m 788000 -ls 2> /dev/nul阑尾方位l
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 的文件(即,简略的文本复制)将花费更多的时刻和精力。
via: https://www.networkworld.com/article/3387961/how-to-identify-duplicate-files-on-linux.html
作者: Sandra Henry-Stocker 选题: lujun9972 译者: MjSeven 校正: wxy
本文由 LCTT 原创编译, Linux我国 荣誉推出