在 Linux 系统中,如果需要定期对整台机器进行恶意软件(病毒、木马等)扫描,ClamAV 是一个常用的免费工具。以下介绍如何进行全盘扫描,并将完整扫描结果保存为带时间戳的日志文件,方便后续查看或归档。

基础扫描命令

ClamAV 的 clamscan 工具支持递归扫描,最基本的写法如下:

bashCopyEditclamscan -r /

但这样会扫描系统中的所有文件,包括 /proc/sys/dev 等虚拟或设备目录,这些目录不适合扫描,会产生大量错误信息。

排除系统特殊目录

为了避免扫描无意义的系统伪文件系统,可以使用 --exclude-dir 参数排除这些目录,例如:

bashCopyEdit--exclude-dir=/proc --exclude-dir=/sys --exclude-dir=/dev

此外,如果还需要排除其他目录(比如存放大文件或备份的目录),也可继续添加 --exclude-dir 参数。

自动保存扫描日志

为了后期分析结果,通常需要将扫描输出同时保存为日志文件。可以结合 tee 命令实现:

bashCopyEditclamscan -r --bell --exclude-dir=/proc --exclude-dir=/sys --exclude-dir=/dev / | tee /root/clamav_scan_$(date +%Y%m%d_%H%M%S).log

命令说明

  • -r:递归扫描子目录。
  • --bell:扫描到可疑文件时响铃提示(需要终端支持)。
  • --exclude-dir:排除指定目录。
  • /:扫描根目录(根据实际需求可以替换为其他路径)。
  • tee:将输出同时写到屏幕和文件。
  • $(date +%Y%m%d_%H%M%S):自动在日志文件名中加上当前日期和时间戳,避免覆盖。

是否支持「增量扫描」

ClamAV 的 clamscan 不会自动跳过已扫描过的文件,每次执行都会重新完整扫描。它不包含「增量扫描」或「缓存机制」,也不会记住上次扫描状态。

如果需要仅扫描新增或修改过的文件,需要额外实现文件变更检测(例如使用 inotify)或定期针对指定文件夹进行局部扫描。

总结

  • 建议定期使用 ClamAV 执行完整扫描,结合日志保存方便审计与分析。
  • 为了提高效率,应根据实际情况合理排除不必要扫描的目录。
  • 每次扫描都是全新扫描,不会自动跳过旧文件。

💡 参考示例脚本

bashCopyEdit#!/bin/bash
SCAN_LOG="/root/clamav_scan_$(date +%Y%m%d_%H%M%S).log"
clamscan -r --bell --exclude-dir=/proc --exclude-dir=/sys --exclude-dir=/dev / | tee "$SCAN_LOG"

Leave a Reply

Your email address will not be published. Required fields are marked *