0

我正在寻找一种方法来比较包含源文件和硬链接的两个文件夹(让我们使用 /media/store/download 和 /media/store/complete 作为示例),然后删除两个文件夹中都不存在的孤立文件。这些文件可能已重命名并可能存储在子目录中。

我想在 cron 脚本上设置它以定期运行。我只是无法从逻辑上弄清楚脚本的逻辑是如何工作的——有人能帮忙吗?

非常感谢

4

3 回答 3

3

rsync可以做你想做的事,使用--existing,--ignore-existing--delete选项。您必须运行它两次,在每个“方向”运行一次,以从源目录和目标目录中清除孤儿。

rsync -avn --existing --ignore-existing --delete /media/store/download/ /media/store/complete
rsync -avn --existing --ignore-existing --delete /media/store/complete/ /media/store/download

--existing说不要复制孤立文件

--ignore-existing说不要更新现有文件

--delete说删除目标目录上的孤儿

源目录上的斜杠,目标目录上没有斜杠,对于您的任务是强制性的。

-avn 中的 'n' 表示不做任何事情,我总是使用 -n 选项进行“试运行”,以确保命令执行我想要的操作,尤其是使用--delete. 一旦你确信你的命令是正确的,就用 -av 运行它来实际完成工作。

于 2013-12-22T23:00:39.123 回答
2

也许rsync有用吗?

Rsync 是一种快速且用途广泛的文件复制工具。它可以在本地复制,通过任何远程 shell 复制到另一台主机或从远程 rsync 守护进程复制。它提供了大量选项来控制其行为的各个方面,并允许非常灵活地指定要复制的文件集。它以其增量传输算法而闻名,该算法通过仅发送源文件和目标中现有文件之间的差异来减少通过网络发送的数据量。Rsync 广泛用于备份和镜像,并作为日常使用的改进复制命令。

注意它有一个--delete选项

--delete                delete extraneous files from dest dirs

这可以帮助您解决上述特定用例。

于 2013-10-21T11:40:17.563 回答
0

您还可以使用“diff”命令列出两个文件夹中的所有不同文件。

于 2013-10-21T12:22:12.220 回答