ExtMail服务器社区's Archiver

fengyong 发表于 2010-1-29 21:14

perl 对比两个数值是否相同编程实例

最近,朋友要求写一个小小的backup 脚本,可以把freebsd 的系统打包,然后一键恢复系统(备份脚本与恢复脚本已经完成,纯shell)为了验证自己备份的软件包,与系统的软件包是否一致, 主要是想看看有没有漏掉的。
程序是跟据pkg_list 这个文件,然后再读取/var/db/pkg 这个目录,看看是否有漏掉的。[code]#!/usr/bin/perl -w
# Script Name: verify the backup packages and  system packages
# author : fengyong
# date: 2010-01-29
use strict;

open (FH,"<pkg_list") or die "pkg_list not found!";
my $file={};

while (<FH>){
        chomp($_);
        $_=~/(\S+)\.tgz/;
        $file->{$1}=0;
        #print "DEBUG::$1\n";
}
foreach (keys(%{$file})){
        print "DEBUG: $_ => $file->{$_}\n"
}

opendir(DIR,"/var/db/pkg") or die "can't open dir /var/db/pkg: $!";
my @dir=readdir(DIR);
foreach (@dir){
        print "DEBUG: package $_ exists!\n";
        next if $_=~/^\.{1,2}$/;
        if (exists($file->{$_})){
                $file->{$_}=1;
        }else{
                $file->{$_}=0;
        }
}
foreach (keys(%{$file})){
        print "RESULT: $_.tgz => $file->{$_}\n";
}[/code]输出结果
0表示未备份的,1表示已经在备份列表中,perl未忘记呀[code]RESULT: p5-FuzzyOcr-2.3.b_2,1.tgz => 0
RESULT: p5-Net-DNS-0.59.tgz => 1
RESULT: p5-Convert-BinHex-1.119.tgz => 1
RESULT: p5-Digest-SHA1-2.11.tgz => 1
RESULT: php5-posix-5.2.0.tgz => 0
RESULT: courier-authlib-base-0.58_2.tgz => 1
RESULT: postfix-2.3.4,1.tgz => 1
RESULT: pkgconfig-0.20.tgz => 0
RESULT: cyrus-sasl-2.1.22.tgz => 1
RESULT: freetype2-2.2.1_1.tgz => 1
RESULT: php5-ctype-5.2.0.tgz => 0
RESULT: jbigkit-1.6.tgz => 0
RESULT: p5-Compress-Zlib-1.42.tgz => 1
RESULT: lcms-1.16_1,1.tgz => 0
RESULT: p5-Digest-HMAC-1.01.tgz => 1
RESULT: p5-XML-NamespaceSupport-1.09_1.tgz => 1[/code]

liushaobo 发表于 2010-1-29 21:17

:lol  勇哥又出山了

页: [1]

Powered by Discuz! Archiver 7.0.0  © 2001-2009 Comsenz Inc.