シンボリックリンクまたはジャンクションを使用すると、OneDrive で双方向同期が機能しない

シンボリックリンクまたはジャンクションを使用すると、OneDrive で双方向同期が機能しない

シンボリック リンクと Windows 10 の問題についてはすでにインターネットでたくさん読んでいますが、今私が遭遇している現象については読んでいません。それでは、ここに…

私の目標は、SSD ドライブの別のデータ パーティションにあるフォルダー (「My Music」) を、シンボル リンク経由で OneDrive クラウドに双方向同期することです。双方向同期を除いて、すべて正常に動作します。どういうわけか、一方通行のままです。:-(

データ パーティションと Windows システム パーティションの両方に NTFS ファイル システムがあります。データ パーティションには文字 ( X:) があります。既存の OneDrive アカウントがありますが、そこにはまだファイルやフォルダーはありません。

私が今理解している限りでは、ジャンクションを作成するのが最善の方法ですが、この場合はシンボリック リンクを作成することもできます。私が実行した手順は次のとおりです。

  1. OneDrive アカウントをオンラインで開設しました。
  2. コンピューターに OneDrive をセットアップします。
  3. OneDrive の標準の場所をシステム パーティションに保持します: C:\Users\<my user name>\OneDrive
  4. 管理者としてコマンドプロンプトを開きました。
  5. 次のコマンドでジャンクションを作成しました:mklink /J “C:\Users\<my user name>\OneDrive\My Music” “X:\My Music”
  6. リンク‘My Music’は、Windows エクスプローラーの OneDrive アイコンの下にフォルダーとして表示されます。
  7. ‘My Music’データ パーティション上のフォルダーへのリンクが実際に機能するかどうかをテストしました。そして、完璧に機能しました。
  8. OneDrive オンラインへ移動します。‘My Music’フォルダーは OneDrive オンラインにも表示されました。
  9. ‘My Music’同期をテストするために、コンピューターからランダムなファイルをフォルダーにアップロードしました。
  10. アップロードされたファイルはオンラインの OneDrive に表示されます。
  11. コンピュータの Windows エクスプローラーに戻ります。アップロードされたファイルは、‘My Music’作成されたリンクを介してデータ パーティション上のフォルダーに表示されています。

ここまでは順調です。OneDrive オンラインにアップロードしたものはすべて、データ パーティション フォルダーに完璧に表示されます。しかし、問題は双方向同期が失敗することです。‘My Music’データ パーティションのフォルダーで何かを変更すると、その変更はリンクされている同じ OneDrive フォルダーに表示されますが (当然ですが)、そこで停止し、OneDrive オンラインに同期されません。なぜでしょうか。解決策は何ですか。

ジャンクションではなくシンボリック リンクを使用した場合もまったく同じことが起こります。mklink /D “C:\Users\<my user name>\OneDrive\My Music” “X:\My Music”

2 つ目の質問は、手順を変更して最初にジャンクション (またはシンボリック リンク) を作成し、次にコンピューターに OneDrive をセットアップすると、結果がまったく逆になる可能性があるのはなぜですか。その場合、作成されたリンクを介してファイルを OneDrive オンラインで同期することは正常に機能しますが、OneDrive オンラインで「マイ ミュージック」フォルダーで何かを変更した場合、その変更はデータ パーティションのフォルダーに表示されません。繰り返しますが、これは 1 つの方法のみです。

まったく理解できません。誰か答えを知っていますか? よろしくお願いします!

答え1

パーMicrosoftのフォーラムのこのスレッドどうやら、OneDrive は 2017 年 5 月 31 日頃にエイリアス (ジャンクション/シンボリック リンク) パスからのファイル変更イベントの通知を受け取っていたようです (ベスト レスポンスとしてマークされた返信を参照)。しかし、2018 年 1 月 17 日に誰かが通知が壊れていると報告し、ベスト レスポンスとしてマークされた返信の作成者がそれを確認したようです。

後者の「ハード リンクを使用する」という提案は機能しません。NTFS には「ディレクトリ ハード リンク」が存在しないと思われるためです。

残念ですが、これは今のところ壊れていると思います。

そのスレッドには回避策についての言及がいくつかあります。ワンドライブいじめOneDrive の (完全な?) 同期を定期的に手動でトリガーし、汎用のフォルダー同期ユーティリティを使用して 2 つのディレクトリを双方向同期します (ディスク領域が 2 倍になり、競合の処理など、必要な場合には多くの問題が発生する可能性があります)。私はどれも好きではありません。

答え2

SD カードが紛失または破損している場合、デスクトップの読み込みに失敗するため、デスクトップ フォルダーを外付けドライブに置くのは安全ではないと思います。そのため、デスクトップをローカルの C: ドライブの既定の場所に保持し、外付けドライブの OneDrive フォルダーにデスクトップへのジャンクション リンクを配置することを好みます。

問題は、mklink /J外付けドライブが期待どおりに OneDrive に同期されないことです。ファイルが変更されてもすぐには同期されません。(他のレポートでは以前は機能していたが、2019 年 1 月現在、私の環境では機能しない)。

しかし、ジャンクションリンクされたデスクトップ意思コンピュータが再開(またはユーザーがログオフして再度ログインしたとき)。目的によってはこれで十分かもしれません。

たとえば、私はデスクトップにファイルを保存するのはたまにしかしないので、ジャンクション リンクを OneDrive フォルダー (外部 SD カード上にあります) に配置します。通常、コンピューターを少なくとも 1 日に 1 回再起動して、デスクトップが毎日同期されるようにします。

(それはまたOneDrive が一時停止されてから一時停止が解除されたときに同期しますが、手動で一時停止/一時停止解除を頻繁に行うのは便利ではありません)

ドキュメントについては、ファイルの変更時にすぐに同期を継続的に実行したいので、ドキュメント フォルダーを外部 SD 上の OneDrive に移動しました。SD カードが紛失または破損した場合でも、アカウントはログインして読み込むことができます (これはドキュメント フォルダーに依存しないため)。

Mklink /H外付けドライブでは許可されません。

答え3

このトピックはかなり古いことは承知していますが、問題はまだ存在しています。OneDrive (元々は Dropbox の直接の模倣のようで、同じ問題を抱えています) は、ソース フォルダーまたはファイルが OneDrive フォルダー内にない場合、シンボリック リンクされたファイルを同期しません。したがって、最も簡単な解決策は、元の (ソース) ファイルを OneDrive フォルダーに配置し、編集する他の場所にシンボリック リンクすることです。2 か所で編集しても、OneDrive は引き続きそれらを同期します。もちろん、宛先フォルダーが再度同期された場合 (たとえば、Dropbox によって)、そのフォルダーは同期されませんが、これは OneDrive と Dropbox を使用している場合には非常にまれなケースです。

mklink /J "C:\...\OneDrive\SourceFolder" "C:\SomewhereElse\HardlinkedFolderToCreate"

私の場合はうまくいきました。2 つのフォルダーのいずれかからファイルを編集でき、OneDrive はそれらを正常に同期します。オンラインでも編集できます (SharePoint ライブラリに同期する OneDrive for Business を使用)。Dropbox でも機能するはずです。逆が必要な場合は、ソースと宛先を切り替えます。

答え4

奇妙なことに、フォルダー構造が小さい場合、これはシンボリックリンクとジャンクションの両方で正常に機能します。

しかし、数十ギガバイトのフォルダー構造に約 100,000 個のフォルダーとファイルをジャンクションまたはシンボリックリンクすると、機能しません。代わりに、OneDrive は永久に「変更を検索しています」状態のままになるようです。

関連情報