OneDriveでデスクトップやドキュメントを自動バックアップ(KFM)している環境では、「ネットワーク共有へのショートカットだけを同期したいのに、シンボリックリンクが原因で同期エラーや大量データの誤同期が起きる」という相談が非常に多くあります。本記事では、OneDriveとショートカット/シンボリックリンク/ジャンクションの関係を整理しつつ、現実的で安全な運用方法を詳しく解説します。
OneDriveとショートカット/シンボリックリンク/ジャンクションの基本整理
まずは、Windows上の「リンク系オブジェクト」とOneDriveの関係を整理しておきます。
| 種別 | 代表的な拡張子/属性 | 役割 | OneDriveでの扱いの概要 |
|---|---|---|---|
| ショートカット | .lnk | アイコン・リンク先パスなどを持つ「単なるファイル」 | 通常のファイルとして同期される。リンク先の中身は同期されない。 |
| シンボリックリンク | 拡張子なし/ReparsePoint属性 | 別のファイル・フォルダーへの仮想的な別名 | OneDriveは正式サポート外であり、バージョンや配置場所により挙動が変わる。 |
| ジャンクション | 拡張子なし/ReparsePoint属性 | フォルダーに対するリンク(ボリュームや別フォルダーへのマウント) | シンボリックリンク同様、OneDriveでは問題の原因になりやすい。 |
Microsoft公式のKFM(既知のフォルダーのバックアップ)解説でも、「保護したいフォルダーにリパースポイント(junction point や symlink)が含まれていると、そのフォルダーは保護できない」と明記されており、シンボリックリンク/ジャンクションはOneDriveの正式サポート対象外と言えます。
一方で、デスクトップに置く「ネットワーク共有への案内」は、多くの企業で業務上必須です。このとき、「.lnkショートカットだけ同期し、リンク先の実体データは同期させない」という設計にしておくと、運用トラブルを大幅に減らせます。
ショートカット(.lnk)は「安全に同期される」
ショートカット(.lnk)は、OneDriveから見ると「数KB程度の小さなファイル」であり、特別なファイルシステム機能ではありません。そのため、OneDrive同期クライアントは .lnk を通常のファイルとして扱い、リンク先のネットワーク共有やローカルパスの中身を勝手に同期しません。
例えば、以下のようなケースを考えます。
- デスクトップ上の
部門共有フォルダー.lnkが、\\fileserver01\sh\salesを指している - ユーザーのデスクトップはKFMによりOneDrive配下(
C:\Users\ユーザー名\OneDrive\デスクトップ)にある
この場合、OneDriveに同期されるのは 部門共有フォルダー.lnk だけであり、\\fileserver01\sh\sales 以下の実体ファイル・フォルダーがOneDrive側にコピーされることはありません。リンク先のサーバーや共有構成が変わったとしても、影響があるのはショートカットの中身だけです。
そのため、
- 「ネットワーク共有の案内」目的でリンクを配布したい
- デスクトップをKFMでバックアップしている
このような環境では、リンクは .lnk ショートカットに統一するのが最も安全な選択肢です。
| 観点 | .lnkショートカット | シンボリックリンク/ジャンクション |
|---|---|---|
| 同期の安定性 | 高い(通常のファイル扱い) | 低い(バージョン・配置により変動) |
| リンク先まで同期されるか | 同期されない | リンク先を辿ってしまう/エラーになる可能性 |
| KFMとの相性 | 良好 | 「Folder contains a reparse point」エラーの原因 |
| 拡張子による除外ポリシー | 「*.lnk」で除外可能 | 拡張子がないため除外不可 |
シンボリックリンク/ジャンクションは挙動が不安定
シンボリックリンクやジャンクションは、NTFSのリパースポイント機能で実装された「高度なリンク機能」です。ところがOneDriveはこれを正式サポートしておらず、フォルダー構成やクライアントのバージョンによって、以下のような問題が報告されています。
- KFMでデスクトップを保護しようとすると「Folder contains a reparse point (junction point or symlink)」エラーとなり、そもそも保護できない
- シンボリックリンク配下のファイルが同期されず、同期ステータスが「変更を確認しています」から進まない
- 逆に、ジャンクションを辿って元フォルダー側の大量データがOneDriveに取り込まれてしまう
- 一部のリパースポイントでは、「タグが無効」「ラベルが無効」といったエラーで削除やバックアップに失敗する
特に危険なのは、「リンク先を辿ってしまうケース」です。リンク元は数十KBのつもりでも、リンク先の実体が数百GBのファイルサーバーの場合、OneDriveが誤ってそれを同期すると、
- クライアントPCのディスクが一気に枯渇する
- クラウド上に社内ファイルサーバーほぼ丸ごとコピーされてしまう
- SharePoint/OneDriveの容量超過やDLPアラートが大量発生する
といったインシデント級の事故になりかねません。Microsoftのサポートコミュニティや技術ブログでも、リパースポイントがOneDrive同期トラブルの原因になっている事例が複数報告されています。
結論として、OneDrive配下(特にKFMでOneDrive管理下になったデスクトップ/ドキュメント/画像)に、シンボリックリンクやジャンクションを置くのは避けるのが安全です。
「拡張子で除外」ポリシーはシンボリックリンク対策にならない
OneDriveには、GPOやIntune管理テンプレートから設定できる「アップロードを除外するファイル種別」ポリシーがあります。英語版では “Exclude specific kinds of files from being uploaded” という名前で、拡張子やファイル名をキーワードとして指定できます。
しかし、シンボリックリンク/ジャンクションは「普通のフォルダーに見える、拡張子のない特殊なディレクトリ」であり、拡張子による除外がそもそもできません。
- できること:独自拡張子の「疑似リンクファイル」(例:
.link)を運用している場合、その拡張子を除外する - できないこと:
mklinkで作成したシンボリックリンク/ジャンクションだけを見分けて除外する
そのため、「シンボリックリンクだけを自動的に除外する」というポリシー設定は現時点では提供されておらず、運用設計で回避する必要があります。
おすすめの回避策:.lnkに統一してリンク先は同期させない
最もシンプルで効果的な方針は、「リンクはすべて .lnk ショートカットに統一する」ことです。
.lnkへの置き換え手順(例:ネットワーク共有へのリンク)
- 既存のシンボリックリンク/ジャンクションの一覧を把握する(後述のPowerShellスクリプトなど)
- 対象ごとに、同じパスを指す .lnk を作成する
- 右クリック → 新規作成 → ショートカット
- リンク先に
\\server\share\folderなどのパスを指定
- 元のシンボリックリンク/ジャンクションを削除する
- KFMやOneDrive同期を再実行し、エラーが解消されていること、余計なデータがアップロードされていないことを確認する
グループポリシーやログオンスクリプトなどで一括配布する場合も、シンボリックリンクを配るのではなく、.lnkファイルを配布するスクリプトに書き換える方が安全です。
リンクをOneDrive配下から退避する運用設計
どうしてもシンボリックリンク/ジャンクションを使わざるを得ないケースもあります(ツールの仕様上、シンボリックリンクを参照する必要があるなど)。その場合は、OneDrive配下に置かない工夫が重要です。
専用パスを用意してOneDrive外にリンクを集約する
代表的な例として、以下のような構成が考えられます。
- OneDrive配下のデスクトップ:
C:\Users\user\OneDrive\デスクトップ - リンク集約用フォルダー:
C:\Links(OneDrive管理外)
シンボリックリンク/ジャンクションは C:\Links に集約し、デスクトップにはそのフォルダーへの .lnk ショートカットだけを置く構成にすると、
- ユーザー体験:デスクトップから1クリックでリンクにアクセスできる
- 同期の安全性:OneDriveに見えているのは .lnk だけで、シンボリックリンク実体はOneDriveのスコープ外
という状態を作れます。
デスクトップのKFM(既知のフォルダーのバックアップ)をオフにする
部門によっては「デスクトップにリンクをゴリゴリ置く運用が前提」というケースもあります。この場合は、そもそもデスクトップをOneDrive配下にしないという設計も選択肢になります。
ユーザー側の設定変更例(Windows 11/OneDrive クライアント):
- タスクトレイのOneDriveアイコンを右クリックし、設定を開く
- 同期とバックアップタブを開き、バックアップの管理をクリック
- デスクトップのスイッチをオフにする
企業環境では、KFMを強制有効化するポリシーを設定していることも多いため、「リンク多用部門だけデスクトップKFMを無効化する」ポリシー設計も検討に値します。
選択同期とFiles On-Demandを組み合わせた回避策
OneDriveでは、次の二つの仕組みを組み合わせることで、「リンク置き場をフォルダー単位で同期対象から外す」といった工夫も可能です。
- 選択同期:OneDriveフォルダー配下で、同期するフォルダーを選択する機能
- Files On-Demand:ファイルをオンライン専用にしてローカル容量を節約する機能
専用フォルダーを「未同期」にする
以下のような構成を用意します。
OneDrive\LinkAreaフォルダーを作成- このフォルダー配下に、どうしてもOneDrive管理下に置きたいシンボリックリンク/ジャンクションを集約(ただし推奨はされない)
- クライアント側では「OneDrive フォルダーの選択」で
LinkAreaを同期対象から外す
この方法は「クラウド側には見えて良いが、クライアントには落としたくない」という場合に限られます。また、KFMによってOneDrive配下に移動したフォルダーは選択同期の対象から外せないこともあるため、事前検証が必須です。
Files On-Demandを必ず有効にしておく
誤ってリンク先を辿ってしまった場合でも、Files On-Demandが有効になっていれば、初期状態ではオンライン専用ファイルとなり、ローカルディスクの被害をある程度抑えられます。
GPOでの設定箇所:
- コンピューターの構成 > 管理用テンプレート > OneDrive > Use OneDrive Files On-Demand
ここを「有効」にしておくと、Files On-Demandが標準でオンになります。
PowerShell/コマンドでリパースポイントを検出・クリーンアップする
運用管理者としては、「OneDrive配下にリパースポイントが紛れ込んでいないか?」を定期的にチェックする仕組みを持っておくと安心です。
PowerShellでOneDrive配下のリパースポイントを一覧する
OneDriveフォルダー直下を再帰的に走査し、リパースポイント(ReparsePoint属性)を拾うPowerShellの例です。
$p = $env:OneDrive # テナントや環境に合わせてパスを明示的に指定してもよい
Get-ChildItem -LiteralPath $p -Recurse -Force -Attributes ReparsePoint |
Select-Object FullName, Attributes
このコマンドで、シンボリックリンク/ジャンクション/ボリュームマウントなどのパスを一覧できます。その上で、
- .lnk に置き換え可能なものは .lnk へ移行
- どうしても必要なシンボリックリンク/ジャンクションは、OneDrive外のパスに移動
といったクリーンアップを行います。必要に応じて、fsutil reparsepoint query などを使って詳細なリパースタグを確認することもできます。
コマンドプロンプトでの簡易チェック
コマンドプロンプトから簡易的にチェックする場合は、次のような方法が使えます。
cd "%OneDrive%"
dir /AL /S
/AL オプションは「リンク対象のディレクトリ」を表示するもので、シンボリックリンクやジャンクションを素早く洗い出すのに役立ちます。
管理者向け:GPO/Intuneで押さえておきたいポイント
企業規模でOneDriveを展開している場合、ポリシー設計が非常に重要です。特に、KFM・拡張子除外・Files On-Demandの3つは、リンク運用にも直接影響します。
Known Folder Move(既知のフォルダーのバックアップ)ポリシー
KFMは、ユーザーの デスクトップ/ドキュメント/画像 をOneDrive配下に自動移動し、バックアップする機能です。ところが、保護対象フォルダーにシンボリックリンク/ジャンクションが含まれていると、前述の通り「Folder contains a reparse point (junction point or symlink)」エラーが発生して保護できません。
そのため、
- リンク多用部門については、デスクトップだけKFM対象外にする
- あるいは、KFM有効化前にリパースポイントスキャン&クリーンアップを義務化する
といった設計が有効です。
「除外するファイルの種類」ポリシーとSharePoint側の拡張子ブロック
OneDrive同期クライアントのGPOには、前述の「アップロードを除外するファイル種別」設定があります。
加えて、SharePoint管理センター側にも「特定の拡張子をアップロード不可にする」設定が存在し、OneDrive同期クライアントにも適用されます。これらを組み合わせることで、
- 巨大ファイル(例:
*.pst、*.bak、*.vhdx)を除外 - アプリケーションが生成する疑似リンクファイル(独自拡張子)を除外
などを行えます。ただし繰り返しになりますが、シンボリックリンク/ジャンクション自体は拡張子を持たないため直接除外できません。
Files On-Demandを必ず有効化する
Files On-Demandは、OneDriveクライアントの標準機能として提供されており、最近のバージョンでは既定で有効になっています。 しかし、GPOで明示的に無効化している環境もあるため、リンク運用が絡む環境では必ず有効化しておくことをおすすめします。
「シンボリックリンクだけ自動除外したい」は原則できない
ここまでの内容を踏まえると、よく出てくる要望が
「シンボリックリンク/ジャンクションだけを自動で除外する設定はないのか?」
というものですが、現時点のOneDrive/Windowsの仕様では、次の理由から実現が困難です。
- OSレベルでは「普通のフォルダー+ReparsePoint属性」として見えるだけで、シンボリックリンクをファイル名で識別できない
- OneDriveの除外ポリシーは、「拡張子」または「ファイル名パターン」でのみ指定できる
したがって、現実的な対策は次の3つに集約されます。
- OneDrive配下にシンボリックリンク/ジャンクションを置かない(設計で避ける)
- .lnkショートカットに統一し、リンク先実体は同期させない
- 定期スキャンでリパースポイントを検出し、クリーンアップする
逆に言うと、この3つさえ徹底すれば、シンボリックリンク/ジャンクションが原因のトラブルはほぼ抑え込めます。
大量データを誤同期してしまったときの初動対応
それでも、既に運用中の環境では、「気付いたらファイルサーバー丸ごとに近い容量がOneDriveに上がっていた」という事態が起きてしまうこともあります。その際の初動対応フローを整理しておきます。
ステップ別の対応フロー
| ステップ | 目的 | 具体的なアクション |
|---|---|---|
| 1. 被害拡大の停止 | これ以上の同期・アップロードを止める | OneDriveクライアントで同期の一時停止を行う。必要であればネットワークも一時的に遮断する。 |
| 2. 原因リンクの特定 | どのリンクが辿られたのかを特定 | 前述のリパースポイント検出スクリプトや、OneDriveのアクティビティログを確認し、原因シンボリックリンク/ジャンクションを特定する。 |
| 3. 原因の除去 | 再発を防ぎつつ環境を安定させる | 原因リンクを削除/OneDrive外に移動し、必要であれば同じパスの .lnk を作成する。 |
| 4. 不要データの削除 | クラウド上にアップロードされた不要データを片付ける | OneDrive/SharePoint上で誤同期されたフォルダーを削除。ごみ箱・第2段階のごみ箱も確認する。 |
| 5. 監査と報告 | 情報漏えいリスクの評価と説明責任 | DLP/監査ログから、どのファイルがどこまで共有されたかを確認し、自社の情報セキュリティポリシーに従って報告・是正措置を行う。 |
| 6. 再発防止策 | 同じ事故を繰り返さない | 本記事で紹介した「.lnkへの統一」「OneDrive外へのリンク退避」「定期スキャン」などをポリシー化・自動化する。 |
特に、機密度の高いファイルサーバーが誤ってOneDriveに複製されてしまった場合は、技術的な削除だけでなく、情報セキュリティ委員会やCSIRTへのエスカレーションも忘れないようにしましょう。
ユーザー教育で伝えるべきポイント
最後に、エンドユーザー向けの教育・ガイドラインとして、最低限押さえておくとよいメッセージを整理します。
- OneDrive配下にシンボリックリンク/ジャンクションは作らない
- どうしても必要な場合は、IT部門に相談する
- ネットワーク共有への案内は .lnk ショートカットを使う
- デスクトップに「不思議なフォルダー」が増えたら勝手に削除しない
- ArcaneなリパースポイントやOneDrive固有のフォルダーの可能性もあるため、違和感があればヘルプデスクに相談
- 同期アイコンの異常(エラー・警告)が出たら放置しない
- スクリーンショットを添えて早めに相談してもらう文化を作る
技術的な対策だけでは限界があるため、こうした「ユーザーに期待する行動」をシンプルなチェックリストとして社内ポータルなどに掲示しておくと効果的です。
まとめ:.lnkはOK、シンボリックリンク/ジャンクションはOneDrive外へ
本記事の要点を整理します。
- .lnkショートカットは安全に同期される一方で、リンク先のネットワーク共有やフォルダーの中身は同期されないため、案内用途には最適です。
- シンボリックリンク/ジャンクションはOneDriveの正式サポート外であり、KFMエラーや大量データの誤同期・同期停止などのトラブルを招きやすいため、OneDrive配下には置かないのが安全です。
- OneDriveの「除外するファイルの種類」ポリシーは拡張子ベースであり、シンボリックリンク/ジャンクションだけを自動除外することはできません。
- 現実的な対策は、
- .lnkへの統一
- リンクのOneDrive外への退避(
C:\Linksなど) - デスクトップKFMの無効化検討(リンク文化の強い部門)
- Files On-Demand有効化と選択同期の活用
- PowerShell/コマンドによるリパースポイント定期スキャン
- 万一、大量データの誤同期が発生した場合は、
- 同期一時停止 → 原因リンクの特定 → リンク削除/移動 → 不要データ削除 → 監査・再発防止
- という一連のフローをあらかじめ手順化しておくと、被害と復旧コストを最小限にできます。
OneDriveとリンク機能の相性は決して良くありませんが、「リンクは .lnk、リパースポイントはOneDrive外」というシンプルな原則を徹底するだけで、多くのトラブルは未然に防ぐことができます。新規展開時だけでなく、既存環境にもスクリプトによる棚卸しを実施し、クリーンな状態を維持していきましょう。

コメント