我正在寻找一种简单的方法来使用 clamav 在还启用了基于 Timeshift 的快照的机器上执行完整的系统扫描。
正如 Ubuntu 网站上的这个答案所建议的那样,我使用的命令如下:
clamscan -r --bell -i -exclude-dir="^/sys" /
(注意:该-exclude-dir="^/sys"
参数是由另一个用户向我建议的,他指出 /sys 是一个虚拟目录,最好将其排除在扫描之外以避免可能的读取访问错误)
该命令按预期工作,“检查计算机上的所有文件,但仅显示受感染的文件并在找到时响铃”。
这有一个明显的问题:“计算机上的所有文件”包括“/timeshift”目录,这是Timeshift用来存储快照数据的目录。
现在,取自 Timeshift 官方页面:
在 RSYNC 模式下,使用 rsync 和硬链接拍摄快照。公共文件在快照之间共享,从而节省了磁盘空间。每个快照都是一个完整的系统备份,可以使用文件管理器进行浏览。
简而言之:Timeshift 复制更改的文件,并使用硬链接引用未更改的文件。据我了解,这意味着“第一个”快照可能是文件系统的完整副本(显然不包括 Timeshift 配置为忽略的任何文件/路径),而任何后续快照仅包括更改的文件和指向的链接到不变的。
问题:在标准设置下,clamscan 还将扫描 /timeshift 文件夹中的每个文件。虽然我可以扫描已更改的文件,这些文件是实际的真实文件...扫描链接似乎是一种浪费,因为基本上它意味着多次扫描同一个文件 - 一个用于文件首先更改的快照,然后每个用于链接到以下快照中未更改的文件。
因此,我正在寻找一种简单的方法来从扫描中排除这些硬链接。man clamscan
显示一个--follow-file-symlinks
选项的存在,但即使做
clamscan -r --bell -i -exclude-dir="^/sys" --follow-file-symlinks=0 /
似乎不起作用。毕竟,据我了解,该选项仅排除symlinks,而 Timeshift 使用的是hard-links。
所以,我的问题是:有没有办法在跳过扫描 /timeshift 目录中的硬链接文件同时扫描真实文件的同时执行完整的系统扫描?
(作为一个额外的问题:使用 clamtk UI 也可以吗?)
文件的硬链接与你所谓的“真实文件”没有区别——它实际上是位于两个目录中的同一个文件。在您的情况下,最好的解决方案就是
-exclude-dir="^/timeshift"
在命令中再添加一个参数clamscan
。