最初に
先日zipの解凍がうまくできず、何回やっても「hoge.zip」→「hoge.zip.cpgz」になってしまうという自体に陥ってしまったので、もう二度とやらないために備忘録として残して起きます。
ちなみに環境はMacOSの想定ですが、Windowsでもほぼ同様にできるかと思います。
ダウンロードするまでの流れの把握と切り分け
まず、おおよそダウンロードするまでの処理はこんな感じですね。
↓
zip圧縮する
↓
ブラウザ等からダウンロードする
↓
zip解凍する
この作業のどの部分で失敗しているのか、どこまでは大丈夫なのか見極めながら作業を進めていきましょう。
ちなみにサイト・システムの管理者ではない場合、ダウンロードする前の段階の問題だった場合には何もしようが無いので、その際にはいさぎよく諦めましょう笑
zip圧縮するときにすでにうまく行ってなさそうな場合
zip圧縮したファイルをサーバーで解凍、またはscpとかを使ってローカルに持ってきて解凍して見ましょう。
もしくはコマンドライン上でファイルのタイプを確認してzipと認識できているかチェックしてみましょう。
1 2 3 4 5 6 7 8 9 10 |
// ファイルのタイプを確認 // zipファイルの場合 $ file hoge.zip hoge.zip: Zip archive data, at least v2.0 to extract // 破損している可能性が高いファイルの場合 $ file fuga.zip fuga.zip: data |
この時点でうまく行ってない場合には、次のことを試してみましょう。
圧縮側のツールを最新 or 古いものに変更
ツールを変更することで解決することがあるそう。
日本語のファイル/フォルダ名を全部潰してみる
日本語を利用してたらうまく行かない事例があるようなので試してみると良いかもしれないです。
ただ、ファイル数が多かったり何らかの理由で変更できないという場合もあるので、他の方法を試してみてからでも良いと思います。
ダウンロードするときにうまく行ってなさそうな場合
サーバー上でのunzipやscpでローカルに持ってきての解凍が大丈夫だった場合、ダウンロードする方法に何かしらの問題があると考えられますので、次の方法を試してみましょう。
ブラウザを変更してみる
Chromeだとだめだったけど、FireFoxなら行けたなどのパターンもあるようなので試してみましょう。
https://kouichirou.aomori.jp/2016/12/16/cpgz-zip/
var_dump、またはechoなどを使っていないか確認する
ソースコード側のダウンロードの処理にて、filereadなどを使っている近くで、var_dump()などを利用していると、headerがうまく作成されずにデータが破損してしまうことがあります。
なので近くにあるvar_dump、echoを排除してみましょう。
解凍する際にうまく行ってなさそうな場合
ダウンロードしたファイルをfileコマンドで確認してみてちゃんとzipファイルっぽい表記になっていた場合、解凍の仕方が悪い可能性があリます。
1 2 3 4 5 6 7 8 9 10 |
// ファイルのタイプを確認 // zipファイルの場合 $ file hoge.zip hoge.zip: Zip archive data, at least v2.0 to extract // 破損している可能性が高いファイルの場合 $ file fuga.zip fuga.zip: data |
unzipコマンドで解凍してみる
1 2 3 4 |
// ターミナルで直接解凍 $ cd Download $ unzip hoge.zip |
解凍用のアプリを最新 or 古いのものに変更
圧縮と解凍のzipバージョンが異なっているとうまく行かないことがあるよう??なので、うまく合わせられる人は合わせてみて、無理そうな人は取り合えず最新のものと少し古いものを試してみましょう。
まとめ
なんかいろんな記事しらべてたら、「解凍するときに使うツールをこれにすれば大丈夫!!」みたいなのばっかりでしたが、いろんな可能性があるのでその人はたまたまそれでうまく行ったけど、自分がその事象がどうかは切り分ける必要がありますね。。。
ネットの情報は取捨選択が難しいですなー。
ちなみにめちゃくちゃ余談ですが、破損したファイルを作成してくれるサービスがあります笑
海外のサイトですが興味があれば見てみてください。
http://www.xnet.se/fd/
あと他にも高パターンのときにcpgzになってしまったっていうのがあればどんどん追加していきます!
※無いことを祈りたいですが。。。
コメント