DEB Banyak Yg Rusak?

Menjengkelkan sekali! Setelah diperiksa dg md5sum, ternyata banyak berkas deb yg rusak (md5sum FAILED). Jika hanya satu-dua berkas hal ini tidak masalah namun jika belasan?

Di tulisan sebelumnya, hasil pemeriksaan saya simpan di /tmp/cekmd5sum.txt, maka untuk mendapatkan daftar berkas yg rusak dpt dg cara:

grep FAILED /tmp/cekmd5sum.txt | sort -k2 > /tmp/chkfailed.txt

Selanjutnya, adalah menggandakan ulang berkas-2 yg ada di /tmp/chkfailed.txt. Untuk membantu pekerjaan yg menjemukan ini, kamu bisa menggunkan skrip kesayanganmu.

Saya tulis skrip berikut:


#!/usr/bin/perl


my $badfile = $ARGV[0];
my $md5sum = $ARGV[1];

if (! -r $badfile or ! -r $md5sum)
{
print "Usage: mymd5.pl badfilelist md5sumfile\n";
exit;
}

my @bads;
my @md5;

die "Can not open $badfile" if (!open(BADF,"<$badfile"));
while (my $l=)
{
chomp($l);
my @f = split /: /,$l;
$bads[$#bads+1] = $f[0];
}
close BADF;

die "Can not open $md5sum" if (!open(MD5,"<$md5sum"));
while (my $l=)
{
chomp($l);

foreach my $i (@bads)
{ $md5[$#md5+1] = $l if (index($l," $i")>=0); }
}
close MD5;

print join ("\n",@md5);

Simpan dg nama mymd5.pl (atau nama lain, sesukamu). Skrip ini berfungsi untuk mendapatkan daftar md5sum dari berkas-2 yg rusak (FAILED). Cara memakainya adalah:

mymd5.pl /tmp/chkfailed.txt /home/sihab/ubuntu/MD5SUMS > /tmp/badmd5.txt


Lanjut....

#!/usr/bin/perl


my $md5sum = $ARGV[0];
my $src="/media/cdrom";

die "Can not open \"$md5sum\"" if (!open(MD5,"<$md5sum"));
while (my $l=)
{
chomp($l);
my @f = split ' ',$l;
print "* ".$f[1]."\n";
my $m = readpipe ('md5sum '.$f[1]);
chomp ($m);
if ($m ne $l)
{
print "-exp: $l\n-act: $m\n";
if (-r "$src/".$f[1])
{
my $cmd = "cp $src/".$f[1]." ".$f[1];
system ($cmd);
print " copy\n";
my $m = readpipe ('md5sum '.$f[1]);
chomp ($m);
if ($m ne $l) { print "ERROR: checksum is different after copy!\n"; }
}
else
{ print " * Pls use another source!\n"; }
}
else { print " ok\n"; }
}
close MD5;

Simpan dg nama copyifbad.pl. Masukkan DVD Repo, lalu jalankan:

copyifbad.pl /tmp/badmd5.txt


Bila muncul : * Pls use another source! maka DVD harus diganti dg yg lain.

* N.B. : Jgn lupa untuk mengubah hak akses ke excutable tiap-2 skrip.
Powered by ScribeFire.

1 Komentar

  1. mas kalo mau bikin http://ubuntu.indika.net.id/dists/gutsy/Release itu gimana?

    BalasHapus