比较两种含源文件和硬链接的两个文件夹,删除孤立文件

问题描述 投票:0回答:3

我正在寻找一种方法来比较包含的源文件和硬链接的两个文件夹(可以使用/媒体/存储/下载/媒体/存储/完整为例),然后删除那些不两个文件夹中存在孤立的文件。这些文件可能已被重命名,并且可以存储在子目录中。

我想此设置在cron脚本定期运行。我不能在逻辑上弄清楚自己是如何工作的脚本逻辑 - 会有人这么好心帮助?

非常感谢

linux bash unix
3个回答
2
投票

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实际做的工作运行。


2
投票

也许rsync是使用的?

Rsync是一种快速和非常多功能的文件复制工具。它可以在本地从另一台主机从远程rsync进程复制到/过任何远程shell,或者/。它提供了大量的控制其行为的各个方面,并允许该组文件非常灵活的规格要复制选项。它是著名的Δ-转移算法,这降低了通过仅发送源文件和现有的文件在目的地之间的差异通过网络发送的数据的量。 rsync的被广泛用于备份和镜像和作为日常使用的改进的复制命令。

注意:它有一个--delete选项

--delete                delete extraneous files from dest dirs

这可能与上面的具体使用情况提供帮助。


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.