在 diff -r 期间排除套接字文件

在 diff -r 期间排除套接字文件

diff有一个选项--recursive( -r) 可以对两个目录(其中的文件)进行比较。有没有办法diff忽略所有套接字文件,而只忽略套接字文件?

我正在使用diff --brief -r --no-dereference /var/ /media/mateusz/Database/tmp/duplicity_unpack/var/来验证部分备份,结果被类似这样的条目淹没了Only in /var/lib/samba/private/msg.sock: 10001。这些文件是 Duplicity 备份失败的套接字文件 - 并且它并不表示备份失败。

我知道我可以编写自己的输出处理程序,但是它有可能出现错误,需要更多时间,并且需要我维护文件系统中的套接字文件列表。

请注意,比较时不应忽略空文件夹。

答案1

我认为diff如果不修改代码,这本身就不可能实现。您需要使用find列出所需的文件,然后可以将其传递给而diff无需递归:

find /var/ -type f -exec diff {} /media/mateusz/Database/tmp/duplicity_unpack{} \;

这只能找到普通文件,因为我认为调用diff其他类型文件没有任何意义,所以没有套接字、FIFO、目录、设备文件等。

相关内容