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
mas kalo mau bikin http://ubuntu.indika.net.id/dists/gutsy/Release itu gimana?
BalasHapus