RoboSync: RobocopyのためのGUIツール
本サイトで公開しているツールです。ダウンロードはこのバナーをクリック!
Version 1.3.27 をリリースしました! (2021/1/1)
RobocopyをGUIから実行できるようにするツールです。コマンドプロンプトを表示することなく、GUI画面からほぼマウス操作だけで実行までできます。
Robocopyがバックグラウンドでそのまま実行されますので設定に迷うことはありません。
・ 複数のコピー項目の作成と管理。
・ スクリプトファイル(バッチファイル)出力が可能。スケジューラによるバックグラウンド処理にも使えます。
・ Robocopyによるコピー実行前に、実行プレビュー(/L)、パラメータのチェック(/QUIT)が可能。
・ Robocopyのパラメータ設定の簡易チェック、Robocopy実行前の簡易チェックを行います。
・ Robocopy実行前後で実行するスクリプトを定義可能。
・ Robocopy実行途中での中断、実行ログの履歴管理と保存が可能。
SMB(Server Message Block)は、Windowsのネットワークでファイル共有を行うためのプロトコルなのですが、昨年2020年頃にSMB圧縮という機能が追加され、ファイル転送時に自動的に圧縮・解凍を行うことができるようになっています。共有フォルダのファイルの読み書きを行う時に、
という処理が自動的に行われます。ユーザが圧縮/解凍を意識することなく、日常のファイル操作が高速化できます。
ネットワーク経由のファイルコピーの場合、通常、転送速度のボトルネックはネットワーク部分になりますので、転送するデータサイズが圧縮されるほど、転送時間は短縮されることになります。もちろん、jpg, zipなどのすでに圧縮済みのファイルは、それ以上の圧縮効果は期待できないため、SMB圧縮による高速化はあまり見込めないですが、それ以外の圧縮可能なファイル、特に大きなファイルの転送では大きな高速化が見込めます。
なお、この機能については、現在、Windows Insider Previewにて開発が進行している状態で、近いうちに動作や設定方法が変更になる可能性がありますので、ご注意ください。本記事は 2021/12/5時点のWindows10の環境をベースに記載しています。
現在、このSMB圧縮を利用したファイルコピーを利用する主な方法としては、以下の2つの方法があります。それぞれ、SMBサーバ、SMBクライアント側で、SMB圧縮を利用するための利用条件や設定がありますので、詳細については後の章で説明します。
エクスプローラなどのファイル操作ツールで共有フォルダからのコピーを実行すると、自動的に圧縮が行われるようになります。ただ、この利用方法には、現時点では以下の条件があるようです。
このあたりは、おそらく今後修正されていくのではないかと思います。
詳細な設定方法については、後述の章をご覧ください。
robocopyなどのコピーツールを使ってSMB圧縮を利用することも可能です。現在、SMB圧縮に対応しているコピーツールは robocopy と xcopy となっており、/compress オプションを付けて実行するとSMB圧縮によるコピーをSMBサーバ側に要求します。
上図の構成例において、共有フォルダ配下のファイルをローカルフォルダにrobocopyでコピーする場合のコマンド例は以下のようになります。
robocopy \\server\share d:\folder /COMPRESS
詳細な利用条件については、後述の章をご覧ください。
ネットワークファイル共有を行うSMBサーバ側は、SMB圧縮に対応したWindowsである必要があります。いろいろ調べてみると、現時点で以下のWindowsがSMB圧縮に対応しているようです。これらのWindowsでフォルダをネットワークに共有すると、SMB圧縮が自動的に働くようになっているようです。
※SMB圧縮に対応しているWindowsバージョン
SMB圧縮により転送を行うかどうかについては、コピー開始時にSMBクライアント、SMBサーバ間でネゴシエーションが行われます。上記のSMB圧縮に対応したWindwosでは、デフォルトで、SMB圧縮を使用する設定となっていると思われますが、状況によっては、SMB圧縮を無効にしたいケースもあるかもしれません。
SMBサーバにて常にSMB圧縮を使用しない(無効化する)設定方法は以下の通りです。
レジストリキーのパスについてですが、SMBサーバ側の設定のキーは"LanmanServer"、SMBクライアント側の設定のキーは"LanmanWorkstation"であることに注意してください。
SMBクライアント側についても、上記、「※SMB圧縮に対応しているWindowsバージョン」である必要があると思われます。
現在のWindowsでは、エクスプローラからはデフォルトでSMB圧縮は無効となっています。そのため、エクスプローラからSMB圧縮を利用する場合は以下の設定を行う必要があります。
現在のWindowsでは、デフォルトでエクスプローラからのSMB圧縮の利用は無効となっているため、この設定は通常不要と思いますが、SMBクライアントとして使用しているPCで、SMB圧縮を常に利用しない(無効化する)場合の設定は以下の通りです。
なお、"EnableCompressedTraffic"、と、"DisableCompression" の両方が設定された場合、SMB圧縮は有効になります。
SMBクライアント側についても、上記、「※SMB圧縮に対応しているWindowsバージョン」である必要があると思われます。
robocopy または xcopy が /compress オプションに対応していることが条件となります。おそらく、上記のSMB圧縮に対応しているWindowsバージョンであれば、利用できるものと思われます。
コピーツールからコピーする場合は、SMBクライアント側でレジストリの設定変更を行わなくても圧縮転送が可能になっています。送信、受信とも、圧縮が行われます。
SMB圧縮による転送時間の短縮効果について、実験をしてみたので、ご紹介したいと思います。
以下のようなテスト環境で、ファイルの内容がオール 0 の10GBのファイルを転送してみました。
SMB圧縮を有効にしていない環境でコピーを行うと、理論上
10GB ÷ 125MB/s = 80 秒
となり、実測結果もおおむねこの転送時間となりました。
一方、SMB圧縮を有効にすると、ファイル内容がオール0ですので圧縮により非常に小さいデータサイズになります。計測結果からすると、だいたい1GB→2MBに圧縮されていた様です。つまり容量比で 5,000分の1です。
しかし、転送時間も5,000分の1になるかというとそうはなりません。なぜなら、今度はディスクIOがボトルネックになるからです。
ネットワークで転送されるデータ量は2MBに圧縮されますが、ディスクに読み書きされるデータは圧縮前の10GBのままとなります。今回のテスト環境では、転送先のディスクIOがボトルネックになり、かかる時間は、
10GB ÷ 200MB/s = 50 秒
となります。実測結果もこのくらいの転送時間でした。
まとめると、今回の実験結果としては、 80秒 → 50秒 との結果でした。
ただ、実際の環境においては、それほど大きく圧縮できるファイルはないと思われます。もし、ファイルの圧縮率が10% (10GB→9GB)であったとすると、圧縮後の転送時間は、
9GB ÷ 125MB/s = 72 秒
の計算となります。80秒→72秒 の8秒の短縮ですね。
さらに、今回計測した環境は1GbpsのLAN接続でしたが、これがもし100Mbpsだったとすると、圧縮なしでの転送は
10GB ÷ 100Mbps(12.5MB/s) = 800 秒
圧縮後(10%圧縮の場合)は、
9GB ÷ 100Mbps(12.5MB/s) = 720 秒
となります。 800秒 → 720秒 の効果となります。
結局のところ、SMB圧縮効果は、環境条件によって効果も大きく変わるということが言えると思います。おおむね圧縮率に比例した転送時間の短縮は見込めると考えてよいと思われますが、実際にどのくらいの効果になるかは、コピー対象のファイルがどのくらい圧縮できるか、などをもとに、上記のようなモデルで計算してみてください。
この章は、通常の製品版のWindowsには関係ない話になりますので、Insider Previewをご存じない方は読み飛ばしてください。
SMB圧縮の機能は、開発者向けの評価版Windowsである Insider Previewにて機能の改善が進められているのですが、Windows 2022とWindows 11 のInsider Previewでは、SMB圧縮のアルゴリズムは以下のようになっていました。
つまり、100MB以上の圧縮効果が出せない小さいサイズのファイルは圧縮されず、実際に圧縮されるファイルは大きなファイル(例えば数GB以上のファイル)に限られていました。しかし、Windows 11 Insider Preview Build 22449 からは、上記アルゴリズムは撤廃され、ファイルサイズによらず常に圧縮が行われるように修正されています。
通常の製品版のWindowsでは、常に圧縮して転送するロジックになっていると思われます。
本記事では、SMB圧縮の利用方法として、①エクスプローラを利用する方法と、②コピーツールを利用する方法をご紹介しましたが、SMB圧縮のマイクロソフトのページでは、ネットワークドライブへの割り当てによる方法も解説されています。が、ちょっと調べたところ、その設定には、現在まだ Pre-release の Windows Server 2022 PowerShell が必要のようでした。近いうちにこの利用方法も可能になると思われます。
SMB圧縮のエクスプローラによる利用は、レジストリの設定が必要であったり、転送方向が片方向だったりと制約があるので、実際には現時点で使える方法としては、コピーツール(robocopy, xcopy) によるコピーになるような気がします。
一般的には圧縮できる割合に応じて転送時間の短縮が図れるのではないかと思われます。特に、LANの速度が100Mbpsである場合にはその効果は大きいと思われます。
ご自分の環境に応じて、利用・導入を検討されてはいかがでしょうか。
Related Articles
管理者より個人的に返信をご希望の方は、コメント中に必ずメールアドレスを記載してください。記載がないと返信できませんのでご注意ください。
If you want personal response from the author, please do not forget to write your email address in the comment. Otherwise, the author can not reply.
投稿されたコメントは手動で処理されるため、記事として登録されるまで1日程度かかります。
Submitted comments will be processed manually. So, please understand it will take about a day to publish your comment.