• 締切済み

perl で gz 圧縮する方法

 よろしくお願いします。  Perlで、次のようなプログラムを作ることになっています。 1 インターネット上からとあるファイル(容量はだいたい15kb程度、画像ファイルとか音声ファイルではありません)をダウンロードする。 2 このファイルをgz形式で圧縮する。 3 ファイル名を変更する。  この作業を多数回行う必要がある関係で、プログラムを組んでいます。  この点、1と3のプログラムは書けたのですが、2の部分が分からなくて困っています。 いろいろインターネットで検索したところ、「Archive::Tar;」を使っていると説明しているサイトがあって、それを参考にプログラムを組んでみました。  次のようなプログラムを組んでみましたが、gz形式に圧縮されないようです(圧縮されたファイルを再び解凍してみたところ、元のファイルに戻らなかった)。 use Archive::Tar; my $tar = Archive::Tar->new(); $tar->add_files( $newfilename1 ); $tar->write( $newfilename2 , 3 ); ( $newfilename1 はダウンロードしたファイル名、$newfilename2 は gz形式に圧縮したファイルの名前です)  この4行のプログラムは正しいのでしょうか?  間違っているのであれば、どこを直せばよいでしょうか?  よろしくお願いします。

  • Perl
  • 回答数1
  • ありがとう数12

みんなの回答

  • mk48a
  • ベストアンサー率56% (1133/2007)
回答No.1

Archive::Tar は、tar形式(無圧縮)でアーカイブするものです。 gzで圧縮・回答したい場合には、 コマンドラインで使用するか、 http://hw001.spaaqs.ne.jp/k-okada/computer/perl/perl_gzip_100505a.html CPAN(perl module)のIO::Compress::Gzipを使用するのが良いかと思います。 http://search.cpan.org/~pmqs/IO-Compress-2.063/lib/IO/Compress/Gzip.pm CPANのインストール方法 http://fakeyakuza.hatenablog.com/entry/2012/12/14/CPAN%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%8B%E3%82%89%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB

関連するQ&A

  • tar.gzファイルの解凍

    FreeBSDを使用しています。 ダウンロードした AAA.tar.gz というファイルを解凍したいのですが、 gunzip AAA.tar.gz とすると、 gunzip: AAA.tar.gz: not in gzip format と出ます。 そこで、 file AAA.tar.gz とすると、 AAA.gz: GNU tar archive と出ました。 ですので、 tar xzvf AAA.tar.gz としてみましたが、以下のように出ます。 gzip: stdin: not in gzip format tar: Child returned status 1 tar: Error exit delayed from previous errors どのようにして解凍すればよいのかご教授いただけませんでしょうか?よろしくお願いいたします。

  • 拡張子gz形式に圧縮したい。

    こんにちは。 Win環境で、普通のファイルをgz形式に 圧縮する方法はありますか? (gzファイルを解凍するほうほうはわかりますが) 教えてください。宜しくお願いします。

  • tar.gzファイルのリストアについて

    Postgres初心者です。 教えてください。 pg_dumpコマンドでdump拡張しのバックアップファイルを生成し、 tarコマンドで****.tar.gzファイルに圧縮しました。 このtar.gzのファイルを直接リストアするコマンドがあれば 教えていただけないでしょうか? -bash-3.2$pg_restore -U postgres -d (データベース名) < ****.tar.gz と実行すると、以下のエラーメッセージが表示されます。 →pg_restore: [アーカイバ] 入力ファイルが有効なアーカイブではないようです。 -bash-3.2$gunzip -C ****.tar.gz | pg_restore -d (データベース名) と実行すると、以下のエラーメッセージが表示されます。 →pg_restore: [tarアーカイバ] tarアーカイブ内でファイルtoc.dat用のファイルヘッダがありませんでした よろしくお願い致します。

  • 解凍ファイル

    ABファイルを解凍したいんですが 「ファイル名.ara.abはアーカイブファイルではありません。」 と出てしまいます。 今使っているソフトなんですがなんていうソフトか忘れたんですが、「.lzh .zip(pass) .bh .bz2 .cab .gz .tar .tar.bz2 .tar.gz .b64 .xxe .uue .exe .tar.gz」に圧縮できます。 abファイルは解凍できませんでしたが、aaファイルは解凍できました。 ABファイルが解凍できるソフトってないですか? 解凍お願いします。

  • tar.gzと.tar.gpの違いは何ですか?

    tar -cvzf を使ったアーカイブ・圧縮の指定なのですが、指定するファイル名に hogehoge.tar.gz という場合と、 hogehogetar.gz という場合、 これは、何が違う事となるのでしょうか? tarの前に.ドットがあるか無いかなのですが・・・。 それぞれ試してみると、ドットなしの方が仕上がったファイル容量が少なくなっています。 展開した場合、中身は同一に思えました。 お詳しい方いらっしゃいましたら、アドバイスの程宜しくお願いします。

  • tar.gz圧縮のファイルサイズについて

    レンタルサーバCPIにて、 公開ディレクトのWebデータを圧縮してバックアップをとりたいと思い、 tar.gz圧縮のスクリプトを書いてcronで自動実行(1日1回)させています。 生成されたデータをみると、 公開ディレクトリのファイル数やフォルダ数は同じにも関わらず、 tar.gzの圧縮ファイルのファイルサイズが毎回異なっているのですがこれはtar.gzの仕様でしょうか? コマンドは下記となります。 tar -czf /usr/home/*****/webdata.tar.gz /usr/home/*****/html/; お分かりの方、ご教示頂ければと思います。 どうぞよろしくお願いいたします。

  • 拡張子tar.gzの解凍

    ユニックスで作ったファイルを圧縮して、私のウィンドウズへメールで送ってくれたのですが、拡張子がtar.gzとなっていて、Lhasaと+Lhacaは持っているのですがどちらででも開けませんでした。 検索したら同じような質問もあって参照してみたのですが、どの解凍ソフトが良いのかも分からず、これかと思われる解凍ソフトをダウンロードしてもその使い方がわからなかったりでとても困っています。 +Lhacaでも解凍できると書いている方もいたのですが、私の場合圧縮になってしまいました。 難しいことは良く分からないので、どなたか分かりやすく教えていただけないでしょうか? ちなみにウィンドウズXPを使っています。

  • /から圧縮したい

    ソラリスが動いているサーバーのデータのバックアップをしようと思っています。 テープデバイス以外の方法をご存知でしたら 教えていただきたいんです。 今やろうとしているのが tar.gzへの圧縮なんですが まとめて圧縮できないかと悩んでおります。 全データを一つにまとめて圧縮なんてできるんでしょうか? コマンドだとファイル名をbackup.tar.gzにするとして tar cvfz backup.tar.gz /  になるのですか?? よろしくお願いします。

  • tar.gzファイルが解凍できない

    さくらのレンタルサーバでCakePHPを動かそうとしています。 http://www.cafechantant.com/blog/2007/09/17/%E3%81%95%E3%81%8F%E3%82%89%E3%81%A7-cakephp/ こちらのサイトを参考にさせていただいて、wgetでcake_1.1.17.5612.tar.gzをダウンロードするところまでできました。 %tar zxvf cake_1.1.17.5612.tar.gz とすると Unrecognized archive format: Inappropriate file type or format と出ます。 %gzip -d ./cake_1.1.17.5612.tar.gz とすると、 %gzip: ./cake_1.1.17.5612.tar.gz: not in gzip format と出ます。どうすれば解凍できるでしょうか。

  • *.tar.gzのファイルをダウンロードすると*.tar.tarになってしまいます。

    インターネット上のあるサイトから、*.tar.gzという拡張子のファイルをインターネットエクスプローラーからダウンロードしようすると、ファイル保存のダイアログで「*.tar.tar」というファイル名になってしまいます。 ダウンロードの際、しくは、ダウンロードしたあとに、「*.tar.gz」に名前を変えれば、gzipで解凍して、tarコマンドで分解できるのですが、なんで拡張子が変わっちゃうかわかりません。 私の周りのパソコンを見ると、こうなるPCもあれば、ならないPCもあります。 確認したPCは全部WindowsXPで、SP1もSP2もありますが、SP1だから、とか、SP2だからということはありません。 世の中的には、どうもこれは当たり前?の事象のようで、メーカーサイトのダウンロードページなどには、ダウンロードの際の注意書きとして、このような事象があることが書いている場合がありました。 ということはしょうがないのかなとも思うのですが、対処方法とかあるのなら知りたいと思い、質問させていただきました。 ご存知の方、いらっしゃいましたらよろしくお願いいたします。

専門家に質問してみよう