extra bytes in zip archive when used with logrotate
Martha Greenberg
marthag at MIT.EDU
Mon Aug 6 20:09:48 IDT 2012
Run zip with the -q option. Otherwise, the output of zip ends up in the created zip file. You can see this by running strings on the zip file, which (without -q) shows:
(deflated 3%)
Adding -q to zip fixes this.
Martha Greenberg
On Aug 6, 2012, at 17:35 , Oleg Goldshmidt wrote:
> Hi everyone,
>
> I am looking at another weird problem on CentOS 6.2. Here is the
> outline - hope someone will be able to help me figure it out.
>
> Many (most?) of you are probably familiar with logrotate(8), and know
> that it is capable of a) compressing the rotated logs, and b) mailing
> them to a specified address. Logrotate is smart enough to know what it
> has compressed and takes care to uncompress the logs before mailing,
> so that the plain text logs become the body of the email.
>
> I need to send zipped logs as attachments as they are rotated. Since
> logrotate allows specifying the mailer program I wrote a trivial
> script that accepts the same arguments as the default "mail", takes
> the stdin, zips it, and calls "mutt -a" to send the archive as an
> attachment. During testing I even commented out the mutt part, so that
> the (simplified, debug version of the) script looks like this:
>
> ---------------------- file: zipit --------------------------------
> #!/bin/bash
>
> archive=/tmp/file.log.zip
> input=/tmp/zipit.$$
>
> # read the input - we want a filename in the archive
> /bin/cat - > $input
>
> # create a new archive
> /bin/rm -f $archive
> /usr/bin/zip -r $archive -j $input
>
> # clean up, keeping the archive for checking
> /bin/rm -f $input
> --------------------------------------------------------------------
>
> As long as I do
>
> $ cat file.log | ./zipit
>
> or
>
> $ gunzip -c file.log.gz | ./zipit
>
> everything is fine. The zip archive is created, i can open it, no problem.
>
> As soon as I try
>
> $ logrotate -vm ./zipit logrotate.conf
>
> everything is also fine, but subsequent unzip results in a warning
>
> $ unzip -l file.log.zip
> Archive: file.log.zip
> warning [file.log.zip]: 16 extra bytes at beginning or within zipfile
> (attempting to process anyway)
> Length Date Time Name
> --------- ---------- ----- ----
> 71992 08-06-2012 16:05 zipit.10182
> --------- -------
> 71992 1 file
>
> and the archive cannot be opened:
>
> $ unzip -c file.log.zip
> Archive: file.log.zip
> warning [file.log.zip]: 16 extra bytes at beginning or within zipfile
> (attempting to process anyway)
> file #1: bad zipfile offset (local header sig): 16
> (attempting to re-compensate)
> inflating: zipit.10182
>
> error: invalid compressed data to inflate
> $
>
> The file cannot be opened either on Linux (the same machine) or on
> Windows (after receiving in the mail) - basically, the archive is
> corrupted. The number of "extra bytes" is always 16, by the way.
>
> I googled and only saw similar complaints about *very* large files or
> when non-binary FTP or similar was involved - neither is the case
> here. I went over the code of logrotate (very readable, creates a pipe
> and calls the configured uncompress command, gunzip by default, before
> passing to mail command), zip, and unzip (very UNreadable) in an
> attempt to find out what could cause the problem, all to no avail. I
> saw that someone succeeded fixing the archive using zip -FFv after
> such a warning. Didn't work for me, but it would be a non-starter,
> anyway.
>
> Packages and versions:
>
> zip-3.0-1.el6.x86_64
> unzip-6.0-1.el6.x86_64
> logrotate-3.7.8-12.el6_0.1.x86_64
>
> Any ideas? For a solution or an explanation?
>
> --
> Oleg Goldshmidt | pub at goldshmidt.org
>
> _______________________________________________
> Linux-il mailing list
> Linux-il at cs.huji.ac.il
> http://mailman.cs.huji.ac.il/mailman/listinfo/linux-il
More information about the Linux-il
mailing list