A verificação da origem dos arquivos de origem e destino é uma boa ideia.
Para ter uma ideia mais específica do que é a corrupção, você poderia fazer uma comparação byte a byte com cmp -l source.gz dest.gz
; também de interesse é se a contagem de bytes difere ( ls -l
).
Aqui está mais uma pequena ferramenta de análise para informar como um dos arquivos pode estar corrompido. Um arquivo zip ou gzip de tamanho razoavelmente grande terá uma distribuição quase uniforme de bytes. Abaixo está um script perl que histograma arquivos. arquivos zip e gzip que foram corrompidos por transferências no modo ASCII terão frequência incomum de retornos de carro e novas linhas, por exemplo, freqüência ou contar duas vezes a norma, ou zero, ou ambos. (Eu vi diferentes servidores FTP ou clientes em diferentes manchetes, por exemplo, adicionando NL após CR, ou excluindo CR de CRLF, ou transformando cada NL em um CR, ou vice-versa. Todos eles interrompem a frequência do caractere exatamente como descrevi. )
Salve isso como hist.pl
e execute-o com perl hist.pl *.gz
; olhando para as frequências na distribuição de valores de byte irá dizer-lhe se uma transferência fez algo como excluído cada CR, ou adicionou um CR para cada LF, etc.
#!/usr/bin/perl -w
use strict;
die "filename arguments expected\n" if ($#ARGV < 0);
foreach my $filename (@ARGV) {
if (!open IN, "<$filename") {
warn "can't open '$filename'\n";
next;
}
print "$filename\n";
binmode(IN);
my @hist = ();
my $total = 0;
while (read IN, my $buf, 1024) {
foreach my $octet (unpack "C*", $buf) {
$hist[$octet]++;
$total++;
}
}
close(IN);
for (my $i = 0; $i < 256; $i++) {
my $count = $hist[$i] || 0;
my $p = sprintf("%.5f", $count/$total);
print "[$i] $count $p\n";
}
print "total $total\n\n";
}
exit 0;