dポイントプレゼントキャンペーン実施中!

いつもお世話になっております。
現在、WindowsXP(SP2)、VisualBasic6.0(SP6)を使って開発しています。

ファイルを別のPCにコピーする処理をしていますが、転送速度が128のように遅い場合、時間が掛かって困っています。(24時間かけてコピーする時もあります。)
そこで、圧縮率を上げて圧縮し、ファイルサイズを小さくしてみようと思うのですが、その方法が分かりません。
圧縮方法はUNLHA32.DLLを使っています。

宜しくお願いします。

A 回答 (8件)

★圧縮率を上げる方法


・一般に複数のファイルを無圧縮で1つのアーカイブにします。そのアーカイブを圧縮します。
 これだけで場合によってはかなり差が出てきます。
・昔、MS-DOS 時代に lha.exe のオプションで無圧縮が出来ました。DLL は対応しているはずですが、
 圧縮/解凍ソフトで無圧縮をサポートしているものは今のところ出会っていません。
 ご自分で作成するならば、複数のファイルを1つの巨大なファイルを作成します。
 このとき、ファイルサイズ、日時、属性もヘッダ情報でちゃんと管理して下さい。
 そして、巨大なファイル(アーカイブファイル)を合併/分離プログラムを行った後に一般の
 圧縮/解凍ソフトで圧縮すれば圧縮率が上がります。ただし、GB オーダーも圧縮可能なソフトを
 選択して下さい。そうしないと圧縮中に強制終了したり、一時ファイルが作業フォルダに残った
 ままになってしまいます。注意!
・以上。無圧縮のアイディアをヒントに頑張って下さい。

この回答への補足

ご回答、ありがとうございます。
早速試してみました。

まず、複数のファイルを一つのフォルダに集め圧縮したところ、
40,314KB
になりました。
次にこのフォルダを無圧縮したところ、
239,433KB(0.LZH)
でした。
この0.LZHを圧縮したところ、40,063KBとなり、あまり大きな差は生じませんでした。

ただ、回答者様が書いていらっしゃる、
「ファイルサイズ、日時、属性もヘッダ情報でちゃんと管理して下さい」
「巨大なファイルを合併/分離プログラムを行った後に」
という箇所の意味が良く分かりませんでした。

私が行った検証は、教えてくださった事に比べて不十分でしょうか?

補足日時:2007/06/04 18:09
    • good
    • 0

★アドバイス


>ところで、『差分+圧縮でも MB オーダーであまり変りませんか』の意味が分からないのですが・・・
 これは普通に『圧縮したサイズ』と『差分情報のファイルを圧縮したサイズ』があまり
 変らないのかという意味です。
 回答 No.5 の補足に普通に圧縮すると 40,314KB となっていますよね。
 それではフォルダに集めた各ファイルの差分情報だけを圧縮しても 40,341KB(40MB)の
 メガバイトのサイズになるのかな?という事でした。
・あと補足に書かれていた GEOBASE 形式って独自のファイル圧縮技術を利用しているようです。
 つまり、書庫ファイル(lzh、zip)や圧縮画像(jpg、gif)と同じくこれ以上の圧縮は望めません。
 よって、すべてのファイルを無圧縮としての高圧縮はあきらめて下さい。
 バイナリデータのファイル形式から無理と判明いたしました。
 地道に低速な転送で頑張るしかなさそうです。

最後に:
・無圧縮のアイディアを出して期待させてしまいすみませんでした。
 最初にファイル形式をお聞きすべきでしたね。
 以上。それでは。
    • good
    • 0
この回答へのお礼

何度も回答していただき、どうもありがとうございました。

>GEOBASE 形式って独自のファイル圧縮技術を利用しているようです。
そうなんですか・・・
調査が足りませんでした。すみません…

無圧縮のアイディア、勉強になりました。
別の場面で使ってみたいと思います。
どうもありがとうございました。

お礼日時:2007/06/07 08:59

★???


・バイナリファイルが 90% でしたか。
 差分ファイルはどの程度のファイルサイズなんでしょうか?
 差分+圧縮でも MB オーダーであまり変りませんか。
・あとバイナリファイルとは Excel の xls とかのデータですかね。
 ファイル数はどのぐらい?
 いろいろ疑問がわきますが、多分これ以上の高圧縮は望めないかもしれませんね。
 無圧縮のアイディアは無理っぽくなりましたね。

この回答への補足

回答ありがとうございます。

・ファイルサイズは、246MBです。
・バイナリファイルは、ちょっと独特なのですが、GEOBASE形式のデータになります。(地図関係のデータです)
・ファイル数は今試している環境では、1620です。

ところで、『差分+圧縮でも MB オーダーであまり変りませんか』の意味が分からないのですが・・・
教えて頂けないでしょうか?

宜しくお願いします。

補足日時:2007/06/06 12:42
    • good
    • 0

★アドバイス


・どんなファイルを圧縮しましたか?
 すでに圧縮されているようなファイル(lzh、zip、jpg、gif…)などは無圧縮して
 巨大なファイルにして圧縮してもほとんど差がなくなります。
 ここの部分を補足しておくべきでした。
 普通のバイナリ、テキスト、データファイルならば無圧縮して巨大なファイルを
 1つ圧縮することで圧縮率が上がります。
・あと巨大なファイルを作成する合併/分離プログラムは、UNLHA32.DLL で無圧縮できる
 のならば作成する必要はありません。UNLHA32.DLL で無圧縮を行えばよいので。
・以上。ファイルの形式により無理なこともあります。確認を。

この回答への補足

アドバイスありがとうございます。

圧縮しているファイルは、90%がバイナリファイルで、残り10%がbmpファイルです。

補足日時:2007/06/04 19:20
    • good
    • 0

圧縮効率はそれまでに回答されている方々が示されていますので、


ご質問の解決にはならないと思います。

よって、発想を変えて。

インフラをどうにか改善させるという提案は
お客様に出来ないのでしょうか?

もしくは、128(kbps?)で、24時間なら、50MBぐらいの
データ量でしょうか?

それなら、送信するデータソース(圧縮前)を減らす工夫とか
できないですか?
    • good
    • 0
この回答へのお礼

ご回答、ありがとうございます。

このデータ送信がお客様のシステムにとってメインならば、お客様も考えてくれるかもしれませんが、お客様のシステムのデータを本部で修正して送るという部分になるので、お客様にとってメインではないので、無理だと思われます。

データソースも、差分だけを集めて圧縮するというように工夫しているのですが・・・

お礼日時:2007/06/01 09:01

質問の[高圧縮率で圧縮する方法]の回答にはなりませんしコピーする環境がわかりませんので解決には至らないと思いますが、ファイルのコピーを遅くする要因には、ウィルス対策ソフト(Norton/ウィルスバスター等)が絡んでいるかも知れません。


限られた場所で且つ安全の確認が取れる場合、コピー先のウィルス対策ソフトを停止してからコピーを行なうと良いかも知れない!?
(普通はそんなことしないと思いますが...)
FTPだとどうなるか!?とも思ったのですが、参考URLに記載されている通り解決策にはならないようです。
ご参考になればと幸いです。

参考URL:http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.ph …
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

調べたところ、コピー先のPCでウィルス対策ソフトは起動させていませんでした。
外部と接続することはなく、コピー元のLANとは専用線で繋がっている為だそうです。

単純に、回線速度が上がれば問題も解消されるのですが、そうも行かず・・・

お礼日時:2007/06/01 08:58

劇的な改善は見込めそうにないです。


ご参考になりますでしょうか?

参考URL:http://www.forest.impress.co.jp/article/1998/11/ …
    • good
    • 0
この回答へのお礼

ご回答、ありがとうございます。

参考URLを見ました。
確かにどの圧縮形式を使っても大差ないのですね。
でも勉強になりました。
ありがとうございました。

お礼日時:2007/06/01 08:54

24時間も掛かるのなら、CDやDVDに焼いてそれをコピーしたほうが早いですよ。

この回答への補足

アドバイスありがとうございます。

DVD等にコピーしてという、オフラインの方法もあるのですが、コピー先のPCが遠方(車で1時間とか)にある為、ユーザ先ではオンラインでのコピーが主に行われています。
また、一箇所だけでなく、十数か所のPCにコピーしなくてはいけないということもあります。

補足日時:2007/05/29 17:04
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!