探索 AIX 6:AIX 6 中的 JFS2 文件系统快照(Snapshot)功能入门与使用技巧
2008-11-10 08:27:06 来源:WEB开发网使用快照监控系统安全
快照功能就是将某一文件分区的某一时刻的文件信息状态保存下来。我们可以利用这一功能来监控系统配置文件的状态与内容。系统中的配置文件一般都是放在 /etc 目录下,我们在安装配置好服务器后,可以通过创建一个 /etc 目录的快照来保存的系统配置信息。在系统发生异常或系统配置文件被误改时,可以用来快速的修复系统,以及监控系统状态的改变。
创建文件系统快照
因为 /etc 目录并没有保存在独立的 lv 下,而是放在根目录的空间里,所以我们要首先创建根目录的快照镜像,并将快照挂载到 /mnt 目录下面。
# snapshot -o snapfrom=/ -o size=128m
Snapshot for file system / created on /dev/fslv04
# mount -o snapshot /dev/fslv04 /mnt
接下来我们可以手动的比较 /etc 和 /mnt/etc 目录下的相对应的文件有何异同,也可以使用 diff 命令来对比整个目录文件。比如 diff –r /etc /mnt/etc 2>/dev/null。使用 diff 命令简单快捷,但是因为 /etc 目录下还保存有一些二进制文件并经常改变,使用 diff 命令将会在屏幕输出很多乱码,不方便识别。我在下面写了一个简单 perl 脚本用来识别文本配置文件,然后再进行比对。脚本如下:
# cat diff.sh
#!/usr/bin/perl
# 执行方法 ./ diff.sh DIR1 DIR2 该脚本将比较 DIR1 与 DIR2 目录中的同名文件异同。
# 检查输入的目录名 DIR1 与 DIR2 是否存在,如不存在立即退出。
-e $ARGV[0] || die "Warning,Directory $ARGV[0] doesn't existn";
-e $ARGV[1] || die "Warning,Directory $ARGV[1] doesn't existn";
# 将 DIR1 目录中的所有文件通过 find 命令列出到文件,并作为文件方式打开。
open CONFIG,"find $ARGV[0] |";
# 依次从 CONFIG 文件读取出各文件名(包括路径)
foreach (<CONFIG>) {
chomp;
# 通过 file 命令检查该文件的属性,是否是文本文件。
$type=`file $_`;
if ((!( $type =~ /data/i) && $type =~ /text/i)|| $type =~ /shell/i )
{
$base=length($ARGV[0]);
$extend=substr($_,$base);
$extend=$ARGV[1] . $extend;
# 通过 diff 命令分析文件内容差异并输出到屏幕。
$diffs=`diff -c $_ $extend`;
if ( $? != 0 && $diffs ne '' )
{
print "$diffs n";
}
}
}
更多精彩
赞助商链接