tcpdump文件轮转靠-C和-W参数配合实现:-C设单文件大小(MB),-W限保留数量,超限时覆盖最老文件;可叠加-G(时间轮转)、时间戳命名、-s0(全包捕获)等提升实用性。

Linux中tcpdump按文件大小轮转存盘,核心靠 -C 和 -W 两个参数配合使用,避免单个pcap文件无限增长、撑爆磁盘。
基础轮转机制:-C 指定大小 + -W 限制数量
用 -C 设置每个文件最大容量(单位是 MB,注意是 1,000,000 字节),用 -W 控制最多保留几个轮转文件。超出数量时,最老的文件会被自动覆盖:
- -C 100:每个文件达到 100MB 就新建下一个
- -W 5:最多保留 5 个文件(如 cap001.pcap 到 cap005.pcap)
- -w /var/log/cap/cap%03d.pcap:用 %03d 自动编号,保证排序正确
完整命令示例:
sudo tcpdump -i eth0 -s 0 -nn -C 100 -W 5 -w /var/log/cap/cap%03d.pcap
增强实用性:加时间戳命名 + 完整包捕获
仅靠大小轮转有时难对齐业务日志。建议叠加以下参数提升可追溯性:
- -G 300:每 5 分钟强制新建文件(与 -C 形成“时间 or 大小”双触发)
- -w cap-%Y%m%d_%H%M%S.pcap:文件名自带精确时间,方便关联系统日志
- -s 0:确保抓全包,避免应用层字段被截断
- -nn:跳过 DNS 和端口解析,减少延迟和干扰
组合命令示例:
sudo tcpdump -i eth0 -s 0 -nn -G 300 -w cap-%Y%m%d_%H%M%S.pcap
注意事项:目录权限、磁盘空间与过滤精度
轮转功能再强,也依赖基础环境稳定:
- 确保目标目录(如 /var/log/cap/)存在且 tcpdump 进程有写权限
- 提前检查磁盘剩余空间,-W 5 -C 100 至少需预留 500MB 可用空间
- 不加过滤表达式会抓全量流量,可能很快填满单个文件;建议叠加 host、port 或 tcp 等条件缩小范围
- 若需长期运行,可用 nohup 或 systemd service 管理进程,防止终端断开中断抓包


















