家里乱了要收拾,ref="/tag/36/" style="color:#8B0506;font-weight:bold;">服务器上的日志文件多了,其实也一样。每天生成的访问日志、错误日志堆在目录里,时间一长不仅难找,还占空间。与其手动翻查、压缩、归档,不如写个小脚本,让它自动完成这些‘收纳’工作。
像整理衣柜一样整理日志
你可能每周都会把穿过的衣服分类,该洗的放进洗衣篮,过季的收进收纳箱。服务器日志也该这么管。比如,把七天前的日志打包压缩,移到历史归档目录,就像把冬衣收进行李箱。这个过程,完全可以用一个简单的 Perl 脚本来实现。
#!/usr/bin/perl
use strict;
use warnings;
use File::Find;
use File::Copy;
my $log_dir = "/var/log/myapp";
my $archive_dir = "/var/log/archive";
my $days_old = 7;
# 确保归档目录存在
-d $archive_dir or mkdir $archive_dir or die "无法创建归档目录: $!";
find(sub {
return unless -f $_; # 只处理文件
my @stat = stat($_);
my $mtime = $stat[9];
my $age_in_days = (time - $mtime) / (60 * 60 * 24);
if ($age_in_days > $days_old) {
my $filename = $_;
my $target = "$archive_dir/$filename." . time();
move($_, $target) or warn "移动失败 $_: $!";
system("gzip", "$target");
}
}, $log_dir);
这段脚本会定期扫描日志目录,把超过七天的文件移走并压缩。你可以把它加入 crontab,每天凌晨跑一次,就像设定扫地机器人定时清洁一样省心。
不只是日志,配置文件也能“归档”
有时候上线新功能,要备份旧的配置文件。手动复制粘贴容易漏,还可能覆盖错版本。用 Perl 脚本,可以在每次更新前自动把当前配置打包存档,加上时间戳,就像给重要文件贴上标签再放进文件柜。
运维中的“收纳整理”,不是追求整洁好看,而是让系统更易维护。东西还在,但各归其位,要用的时候一找就着。自动化脚本就是你的数字收纳师,不声不响,却让一切井井有条。