「Windows 10ミニTips」は各回の作成時点で最新のWindows 10環境を使用しています。

筆者も多忙にかまけて忘れていたのだが、MicrosoftはSMB(Server Message Block) 3.1.1で、ファイル転送時にデータを圧縮する「SMB Compression」を追加した。圧縮されていないファイルに対して、LZ77やDeflate(LZ77とハフマン符号化を組み合わせたもの)、LZ77の亜種であるLZNT1などを用いて圧縮することで、ネットワーク帯域の消費を軽減するものである。

同機能は2020年3月に脆弱性が明らかになるなど、ケチが付いてしまったものの、その有効性に言及した記事はさほど多くない。そこで、SMB Compressionをサポートするrobocopy.exeで簡単なベンチマークを行った。

  • Windows 10 バージョン1909のxcopy.exe。この時点でSMB Compressionは未サポート

  • Windows 10 バージョン2004のxcopy.exe。SMB Compressionを有効にする「/compress」が加わった

fsutil.exeコマンドで10GBのファイルを生成し、デスクトップPCからHyper-V上のWindows 10 PCに、robocopyでファイルを3回コピーした。その平均値だが、「/compress」を付けない通常のコピーは「約45.6秒」。「/compress」を有効にしたコピーは「約7.3秒」という結果だった。

  • 「/compress」付きrobocopyの実行結果

Microsoftが2020年3月に公開した公式ブログによれば、robocopy.exeやxcopy.exe以外では、SMB経由のHyper-VライブマイグレーションでSMB Compressionを有効にできるという。

  • 公式動画より抜粋したMicrosoftによるデモシーン。CPU使用率はさほど上がっていない

最近は重要なファイルをクラウドストレージに置き、バックアップする機会は減っているものの、バッチファイルなどで定期的にファイルをバックアップしているかたは「/compress」オプションを検証してほしい。