yll*_*ate 5 shell bash zsh diff shell-script
我有一个场景,我从可能不同时间点的驱动器中进行恢复,该时间点不仅在存在的文件方面可能有所不同,而且还存在一些损坏,其中许多文件明显损坏。
我们将左侧文件夹命名为“A”,右侧文件夹命名为“B”。
我有责任合并这两个图像,这样:
注意:此时日期几乎无关紧要,尽管在元数据中保留较旧的日期会很好。
这怎么能干干净净地完成呢?不幸的是,我必须对数十 TB 的数据执行此操作,因此如果我不知道如何自动化此操作,这将是一个非常漫长的过程。看来 90-95% 的内容是相同的,因此应该制定一种“设置好然后忘记它”的方法,为进行手动比较做好准备。
第 2 步和第 3 步似乎是最困难的,所以让我们从这些开始。
有一个名为的工具rdfind
可以查找重复文件。您可以决定在检测到重复项时该怎么做:在您的情况下,您希望将其从 B: 中删除rdfind -deleteduplicates true A B
。如果 A 和 B 中存在相同的文件,则保留 A 中的文件。其他选项是用硬链接或软链接替换副本,或者只是报告结果。
然后,保留在 B 中的文件要么是 B 所独有的,要么 B 中的文件与 A 中的不同。 将唯一的文件从 B 移动到 A:mv -i B/* A/
并no
在每次询问是否要覆盖时回答。您可以使用 自动化此操作yes no | mv -i B/* A/
。如果您使用 GNU mv,则可以使用mv --no-clobber B/* A/
.
当然,在对真实数据进行操作之前,您需要先进行练习。您可以轻松地在 A 和 B: 中创建指向文件的硬链接树mkdir training; cp -lr A training; cp -lr B training
,并在那里进行练习。