CAD日記

主にAutoCADのことについて書いているけど、近頃は投資系ネタに注力している。自動売買、仮想通貨、PC関係、プログラミングなど。@caddiary

ソフト開発

コピー元でzip圧縮後にネットワーク越しにファイルコピーしてコピー先で解凍するのを自動化できないか

投稿日:2019年8月25日 更新日:

コピー元でzip圧縮後にネットワーク越しにファイルコピーしてコピー先で解凍するのを自動化できないか。。とここ数日考えていた。そんなことをしたい理由と要件をはっきりさせておく。

対象のファイルやフォルダがデカいというのがポイント。数十~数百GBになる。Hyper-Vの仮想マシンのvhdxやavhdxはそのくらいの容量になるもので、Hyper-Vホスト間で移動したいということがある。そのくらいのサイズになると一晩コピー処理させておかないと終わらないし、ヘタすると週末ずっと動かしておく必要がある。昼間にそんな巨大なデータをコピーしているとネットワーク回線に負荷がかかって、ネットワーク全体の処理が低速化するはずで、社内の怖い人に怒られる恐れがある。圧縮することで少しでも小さくして、コピーする処理時間を減らしてやりたいということ。また、細切れの小さいファイルをコピーしたいということもあって、VisualSoruceSafeのデータがそれにあたる。小さいファイルを大量にコピーしようとするとやけに時間がかかるということは、やったことある人ならよくわかるだろう。

zipファイルのサイズ上限は4GBなんて言われているが、それはOS標準の機能や少し前のソフトの制限。7zipの64bit版であれば制限はない模様。圧縮前で240GBのファイルで、圧縮と解凍ができることは確認済み。どうせ7zipを使うのであれば、圧縮率の高い7zを使ってもいいだろう。
①コピー元でzip圧縮 ②zipをネットワーク越しにコピーする ③コピー先で解凍する という3つのステップを行うわけだが、これを手動でやると数時間おきに操作をしなければいけない。処理が終わったというタイミングに気付かなければ時間の無駄だし、裏で動かしておいていつ終わるかとちょこちょこと見なければいけないのは気が散る。処理開始させたら、あとはずーっとやらせておいて、最後に結果を出すというのがよい。

以下で要件をまとめてみる。
1.コピー元のファイル(またはフォルダ)を指定する
2.コピー先のフォルダを指定する
3.1で指定したファイルのサイズを取得する
4.2で指定したフォルダの空き容量を取得する
5.3のサイズが4のサイズ以上ならエラー
6.1で指定したファイルを圧縮する
7.6で圧縮したファイルを2で指定したフォルダに移動する
8.7で移動したファイルをその場で解凍する
9.8で解凍したファイルサイズと2のサイズが同じでないならエラー
10.7で移動した圧縮ファイルを削除する
エラー処理まで含めると結構な手数になる。

理想で言えば、Shell(エクスプローラ)を拡張して「圧縮貼り付け」なるメニューを追加すればいいのだが、Shellの拡張自体がハードル高そうなので、C#のフォームアプリで作るのがいいだろう。C#(つまり.NETアプリ)ならばzip圧縮が自前で行えるらしいけど、ファイルサイズの上限が気になる。4GB超えは無理そうだ。よって、7zipをコマンドラインで呼び出すというのが得策だ。以下のように単純な呼び出しでzip圧縮ができる。7z.exe a 圧縮結果.zip 圧縮対象
C#で誰でも使える状態にするのもいいけど、PowerShellで処理を書き込んでしまうのもいいかも。なんて言ってるおいらがPowerShellをよく知らんので、そこから勉強しなきゃいかんからちょいとメンドウ。

こういうアプリってありそうだと思ってググってみたがなかった。探し方が悪いのかもしれない。いや、こういう要件が一般的でないというだけか。でも、潜在的なニーズはあるような気がするので、まともなものができたらフリーソフトで公開してみるのもよいだろう。ニッチな要求だとしても、そこそこのダウンロードがされるんじゃないか。

-ソフト開発

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

関連記事

no image

PMサーバー版リリース

ペーパーモデル化ツールサーバー版の宣伝。 詳しくは、kensetsu21のこちらのサイト(PDF)をご覧あれ。 クライアントは、サーバー上の共有フォルダにファイルを ドラッグ&ドロップするだけ。 サー …

no image

円周率

3.1415926535…。私が記憶しているのはここまでです。スーパーコンピュータを使って数億桁まで計算、なんてニュースをよく聞きますね。コンピュータの性能向上とアルゴリズムの工夫に対する …

no image

ファイル選択でアプリ即死

まずはキーワードを並べる。 ・ファイル選択ダイアログ ・デスクトップ ・ツールチップ ・マウスカーソル ・2回目 ・落ちる(スッといなくなる) ・Adobe Reader 7 ・pdfshell.dl …

no image

CEditでドラッグ&ドロップ

プログラミングから離れてしばらく経ってしまった。 プロジェクト管理をやっていると、プログラミングをやることができなくなる。 対人間の仕事の合間にプログラムをやることは、おいらには無理だった。 プログラ …

no image

複数ファイルの名前やパスを取得するのに便利なフリーソフト

ファイル名の一覧を作りたいときに使えるものはこれだ。 NameToClipboard64 インストーラは付いていないが、以下の簡単な操作でセットアップができる。 1.zipをダウンロード後解凍して適当 …