DirectConnect

ガイド

Mac と Windows の間のファイルコピーはなぜこんなに遅いのか

Mac と Windows PC の間のコピーが遅い原因は、ほとんどが 2 つのうちどちらかです。コピーが Wi-Fi を通っているか、フォルダに数千個の小さなファイルがあるかです。まずコピーがどの接続を使っているか確認し、次に小さなファイルに対処します。

思ったより難しい理由

  • たぶん Wi-Fi を通っている。両方のコンピュータが有線やケーブルでつながっていても、コンピュータ名で接続すると Wi-Fi のアドレスが見つかることがあり、すべてのファイルが空中を通ります。
  • 小さなファイルは 1 つずつ処理される。両方が使うプロトコルの SMB は、ファイルごとに別々の要求で開き、書き込み、閉じます。数千個の小さなファイルのフォルダは、ほとんどの時間を待ちに費やします。テストでは、10 Gb/s の接続で Mac が SMB で 20,000 個の小さなファイルをコピーするのにほぼ 4 分かかりました。
  • すべての要求に署名される。Windows 11 バージョン 24H2 は、既定ですべての接続に SMB 署名を必須にしており、要求ごとに処理が増えます。
  • ファイルはスキャンされる。Microsoft Defender は、PC に届いたファイルを検査し、どのプログラムであれ最初に開かれたときにも各ファイルを検査します。テストでは、Defender がスキャンしていない 2,000 個の小さなファイルを PC から Mac へコピーするのに 18.8 秒かかりました。2 回目のコピーは 1.3 秒でした。
  • Finder が余分なファイルと問い合わせを追加する。共有フォルダに隠しファイル .DS_Store を書き込み、閲覧中にアイコンやプレビューを要求します。
  • 接続自体が偏っていることがある。40 Gb/s ケーブルでつないだある Windows PC と Mac の組み合わせでは、ファイル共有を使う前の段階で、Windows から Mac へは 12.0 Gb/s しか出ず、Mac から Windows へは 24.2 Gb/s でした。
  • ケーブル接続には専用の設定が必要。ケーブルで共有するには、両方のコンピュータで新しいネットワークプロファイル、共有設定、アカウント、169.254 で始まるアドレスが必要です。

1. コピーがどの接続を使っているか確認する

Windows PC でコピー中にタスク マネージャーを開き、パフォーマンスを選びます。ネットワークアダプターごとにグラフがあるため、Wi-Fi と Ethernet のどちらが通信を運んでいるかがわかります。ケーブルは Ethernet アダプターとして表示されます。

Wi-Fi が使われている場合、コピーは相手のコンピュータを Wi-Fi のアドレスで見つけています。切断してから、コンピュータの名前ではなく、有線またはケーブル接続のアドレスで接続し直します。一時的に Wi-Fi をオフにすれば、コピーが Wi-Fi を使っていないことも確認できます。

2. Wi-Fi ではなくケーブルで共有する

両方のコンピュータに Thunderbolt 3 以降または USB4 があれば、ケーブルでつなぐと直接のネットワーク接続になります。Mac ではThunderbolt ブリッジと呼ばれ、Windows では新しい Ethernet 接続として表示されます。アドレスを配るルーターがないため、それぞれが 169.254 で始まるアドレスを自分で割り当てます。

Windows PC で

ケーブル接続でフォルダを共有します:

  1. 設定を開き、ネットワークとインターネット、イーサネットの順に選び、ケーブルの接続を選びます。
  2. ネットワーク プロファイルの種類でプライベート ネットワークを選びます。Windows は新しい接続をパブリックに設定し、PC を隠して共有をブロックします。
  3. ネットワークとインターネットに戻り、ネットワークの詳細設定、共有の詳細設定の順に選びます。プライベート ネットワークでネットワーク探索とファイルとプリンターの共有をオンにします。
  4. エクスプローラーでフォルダを右クリックし、プロパティ、共有タブ、共有の順に選びます。自分のアカウントを追加し、読み取り/書き込みに設定します。
  5. ターミナルを開いて ipconfig を実行します。ケーブルの Ethernet アダプターの IPv4 アドレスを控えます。169.254 で始まるアドレスです。

Mac で

共有フォルダに接続します:

  1. Finder で移動、サーバへ接続の順に選びます。
  2. smb:// に続けて PC のケーブルアドレス(例:smb://169.254.20.30)を入力し、接続をクリックします。
  3. 登録ユーザを選び、PC のアカウントのユーザー名とパスワードでサインインします。PC が Microsoft アカウントを使っている場合は、Windows の PIN ではなく、そのメールアドレスとパスワードを使います。
  4. 共有フォルダを選びます。Finder で開きます。

逆方向にコピーするには

Mac でフォルダを共有し、Windows から接続します:

  1. Mac でシステム設定を開き、一般、共有の順に選び、ファイル共有をオンにします。
  2. ファイル共有の横の情報ボタンをクリックし、オプションをクリックします。Windowsファイル共有で自分のアカウントを選び、パスワードを入力します。
  3. システム設定でネットワーク、Thunderbolt ブリッジ、詳細の順に選びます。TCP/IP の IP アドレスを控えます。
  4. PC で、エクスプローラーのアドレスバーに \\ に続けて Mac のアドレス(例:\\169.254.40.50)を入力し、Mac のユーザ名とパスワードでサインインします。

ケーブル接続では、Thunderbolt ブリッジの横の黄色い点と「自己割り当て IP」は正常です。Thunderbolt ブリッジや PC の新しい Ethernet 接続がまったく表示されない場合は、どちらかのポートかケーブルが Thunderbolt や USB4 に対応していません。

3. 小さなファイルのフォルダを ZIP にまとめる

1 つの大きなファイルは、数千個の小さなファイルよりはるかに速く移せます。フォルダを圧縮し、アーカイブをコピーして、相手側で展開します。Mac ではフォルダを Control キーを押しながらクリックし、圧縮を選びます。Windows では右クリックして圧縮先、ZIP ファイルの順に選びます。

Windows PC からコピーしていて先に ZIP にできない場合は、robocopy を使うと 1 つずつではなく複数のファイルを同時にコピーできます。PC のターミナルで次を実行します:

robocopy "C:\Projects\Site" "\\169.254.40.50\Shared\Site" /E /MT:16

2 つのパスを、自分のフォルダと Mac の共有フォルダに置き換えます。/E はサブフォルダを含め、/MT:16 は 16 個のファイルを同時にコピーします。どちらのフォルダでも何も削除しません。

4. Finder が共有に .DS_Store ファイルを書き込まないようにする

これは Finder の設定を変更します。Mac のターミナルで次を実行します:

defaults write com.apple.desktopservices DSDontWriteNetworkStores -bool true

その後、ログアウトしてもう一度ログインします。元に戻すには、write の代わりに delete を使い、-bool true を付けずに同じコマンドを実行します。

5. スリープ、再起動、ケーブルを抜いたあとの再接続

どちらかのコンピュータがスリープや再起動をしたり、ケーブルが外れたりすると、共有フォルダは自動では戻りません。Finder はサーバとの接続が中断されたと表示し、エクスプローラーは共有に赤い × を表示します。

同じ方法で接続し直します。Mac ではサーバへ接続に最近使ったサーバが一覧表示されます。Windows ではアドレスバーがアドレスを覚えています。相手のコンピュータの 169.254 のアドレスが変わった場合は、先に新しいアドレスを調べます。共有を接続したままにする方法は、スリープ後に共有フォルダが切れる場合をご覧ください。

署名とセキュリティスキャンはファイルを守るためのものなので、時間短縮のためにオフにすることはおすすめしません。