我正在寻找一种简单的方法(一个命令或一系列命令,可能涉及find)在两个目录中查找重复文件,并将一个目录中的文件替换为另一个目录中文件的硬链接。
情况是这样的:这是一个文件服务器,多人在上面存储音频文件,每个用户都有自己的文件夹。有时,多人拥有完全相同的音频文件的副本。现在,这些都是重复的。我想让它们成为硬链接,以节省硬盘空间。
我没有使用 btrfs 的经验,但它被宣传为能够对文件进行重复数据删除。
在我的应用程序中,我需要复制整个目录树。
据我了解,btrfs 仅在某些后期扫描中进行重复数据删除,而不是立即删除。即使只是使用cp似乎也不会触发任何重复数据删除(至少,df显示复制文件大小的磁盘使用量增加)。
我可以完全避免移动数据并btrfs直接告诉在另一个位置复制文件,基本上只是克隆其元数据吗?
本质上,类似于硬链接,但具有独立的元数据(权限、修改次数等)。
我有 ~30k 文件。每个文件包含约 10 万行。一行不包含空格。单个文件中的行已排序且无重复。
我的目标:我想找到两个或多个文件中的所有重复行,以及包含重复条目的文件的名称。
一个简单的解决方案是这样的:
cat *.words | sort | uniq -c | grep -v -F '1 '
Run Code Online (Sandbox Code Playgroud)
然后我会跑:
grep 'duplicated entry' *.words
Run Code Online (Sandbox Code Playgroud)
你看到更有效的方法吗?
performance large-files shell-script text-processing deduplication
块级或更详细的重复数据删除有哪些可用的解决方案?
有基于文件的 - 使用“Copy-On-Write”方法。
我正在寻找块级“写时复制”,因此我可以定期查找公共块,或者 - 最好是 - 文件的一部分,合并它们并标记 CoW 使用方式。是否有类似的东西可用,还是仍然需要创建?我不确定 Btrfs 重复数据删除是否是块/文件/子部分级别?有 LessFS,但我不确定它提供什么级别的重复数据删除?也许其他解决方案?
在 Linux 上寻找重复数据删除工具有很多,例如参见这个 wiki 页面。
几乎所有的脚本要么只做检测,打印重复的文件名,要么通过将重复的文件硬链接到一个副本来删除重复的文件。
随着 btrfs 的兴起,将有另一种选择:创建文件(如cp reflink=always)的 CoW(写时复制)副本。我还没有找到任何可以执行此操作的工具,有人知道可以执行此操作的工具吗?
我已经使用 Bedup 对我的 Btrfs 文件系统进行了重复数据删除,所以现在所有重复文件(超过特定大小)都是“reflink”副本。
有什么办法可以看到,给定文件名,还有哪些其他文件是相同的引用链接?
这个问题/答案有一些很好的解决方案来删除文件中的相同行,但在我的情况下不起作用,因为否则重复的行有一个时间戳。
是否可以告诉 awk 在确定重复项时忽略一行的前 26 个字符?
例子:
[Fri Oct 31 20:27:05 2014] The Brown Cow Jumped Over The Moon
[Fri Oct 31 20:27:10 2014] The Brown Cow Jumped Over The Moon
[Fri Oct 31 20:27:13 2014] The Brown Cow Jumped Over The Moon
[Fri Oct 31 20:27:16 2014] The Brown Cow Jumped Over The Moon
[Fri Oct 31 20:27:21 2014] The Brown Cow Jumped Over The Moon
[Fri Oct 31 20:27:22 2014] The Brown Cow Jumped Over The …Run Code Online (Sandbox Code Playgroud) 如何生成 tar 文件,因此 tar 文件的内容像原始文件一样按块对齐,因此可以从块级重复数据删除中受益(https://unix.stackexchange.com/a/208847/9689) ?
(我是否正确地认为 tar 格式没有任何内在因素阻止我们获得这样的好处?否则,如果不是 tar,是否可能还有另一个内置了此类功能的归档程序?)
PS 我的意思是“未压缩的 tar” - 不是 tar+gz 或其他东西 - 未压缩的 tar 和问题要求一些允许对齐文件块级别的技巧。AFAIRecall tar 是为与磁带机一起使用而设计的,所以也许在文件格式中添加一些额外的位来对齐是可能的和容易的?我希望它甚至可能有工具;)。据我记得 tar 文件可以连接,所以也许会有填充空间对齐的技巧。
我正在寻找一种按块内容存储文件的文件系统,因此类似的文件只需要一个块。这是用于备份目的。它类似于 zbackup 等块级备份存储提出的建议,但我想要一个 Linux 文件系统,它允许透明地执行此操作。
我有一个巨大的歌曲文件夹,结构混乱,文件重复在多个文件夹中。
我需要推荐一个工具或脚本,可以通过简单的两个匹配来查找和删除重复项:
在这种情况下,和song.mp3中存储的文件大小为 1234 字节。工具/脚本应仅保留一份副本。/songs/album1/songs/albumz
我在 Fedora 上尝试过czkawka,但它可以按文件名或文件大小进行搜索,但不能将两者组合在一起进行搜索。
deduplication ×10
btrfs ×4
filesystems ×2
archive ×1
awk ×1
backup ×1
cp ×1
duplicate ×1
fedora ×1
file-copy ×1
files ×1
find ×1
hard-link ×1
large-files ×1
linux ×1
mp3 ×1
performance ×1
search ×1
shell-script ×1