返回

揭秘Linux:无需硬链接识别相同内容文件

见解分享

写在前面

在Linux系统中,硬链接(也称硬连接)的文件是指指向相同硬盘内容并共享inode的文件,这一特性使得文件能存放在文件系统内的多个地方,却不会占用额外的硬盘空间。

但除此之外,有时文件副本相当于对硬盘空间的一再占用。因此,本文将着眼于揭秘那些即便没有建立硬链接,却拥有相同内容的文件。

应用实例

为了一探究竟,我们首先需要一个文件,它将是其他所有文件的“内容之源”。您可以创建一个包含任何内容的文本文档,比如简单几行文字或一长串数字,之后只需用文本编辑器保存即可。

  1. 使用touch命令创建一个空文件:
touch original_file.txt
  1. 输入以下内容:
This is the original file.
  1. 另存为original_file.txt

为了更清晰地观察不同内容的文件,我们将创建两个新的文件:

touch copy1.txt
touch copy2.txt

接下来,我们将通过以下命令将“内容之源”复制到这两个文件:

cp original_file.txt copy1.txt
cp original_file.txt copy2.txt

现在,我们将为copy2.txt创建一个副本并对其进行修改:

cp copy2.txt modified_copy.txt
echo "Modified content" >> modified_copy.txt

如果我们比较original_file.txt、copy1.txt和modified_copy.txt,就会发现内容分别为:

This is the original file.
This is the original file.
This is the original file.
Modified content

由此可见,copy1.txt的内容与original_file.txt完全相同,而modified_copy.txt则在此基础上添加了新的内容。

揭秘技巧

在Linux中,可以通过diff命令轻松找出相同内容的文件:

diff original_file.txt copy1.txt

如果两个文件的内容完全相同,diff将不会输出任何结果。

另一种方法是使用find命令:

find / -type f -exec md5sum {} \; | sort | uniq -w32 -z | awk '{print $2}' | xargs -0 md5sum

该命令将对系统中所有文件进行md5校验和,并将结果按照md5值排序,相同md5值的文件将被分到一组。

扩展探索

您可以在学习了基础知识后,进一步探索这些主题:

  • 如何在不同的文件系统中找到具有相同内容的文件
  • 如何自动检测并删除具有相同内容的文件
  • 如何使用md5sum和diff等命令分析文件内容

总结回顾

希望本文能够帮助您更好地理解如何在Linux系统中识别具有相同内容的文件,无论它们是否通过硬链接连接。