2023-03-08

iCloud Driveのファイルが移行アシスタントにより古いファイルで上書きされる

ときどき、iCloud Driveで同期している「書類」や「デスクトップ」フォルダ内のファイルの中身が書き変わってしまう(書いたはずの内容が消える)現象の謎が、今日、ようやく解明された気がした。

いままで「歳食って、いよいよボケが始まったか」と思っていたがそうではなかったのだ。

それはMacBook Airに最新のmacOS Ventura 13.2.1をクリーンインストールしたときのこと。OSインストール完了後、移行アシスタントで元の起動ディスクからデータを移行する処理が終わるまでの待ち時間に、別のMac mini上で書類作成作業を続けていた。

※移行アシスタントは、セットアップの手間を省いてくれる、macOS標準のとても便利なユーティリティだ。

ウチには同じApple IDを設定した複数台のMacがある。それらは、すべてiCloud Driveで同期しているので、MacBook Airのセットアップが完了したら当然そちらにも最新の状態の書類がダウンロードされ、書類作成作業を引き継ぐことができる。できる。できる。と、誰もが思うよね?

アップルのサポート文書、iCloudガイド「iCloud Driveでファイルを最新の状態に保ち、共有する」 https://support.apple.com/ja-jp/guide/icloud/mm19ef899373/icloud にも次のように書かれている。

ファイルはクラウドに保存されるため、フォルダへのファイルの追加、ファイルの名前変更、ファイルの削除など、1つのデバイスで行った変更は、すべてのデバイスに自動的に表示されます。どこからアクセスしても、ファイルの最新バージョンが表示されます。

ところが、MacBook Airのセットアップ/調整を終えてから、Mac miniで編集中だった書類を見ると……

ここ1、2時間に追加した最新の内容がすべて消えている!?

ここで気付いた。 恐ろしいことに、iCloud Driveで同期しているすべてのMacのデータが、移行アシスタントで移し替える元になったデータが保存された時点の 古いファイルで上書きされている。

「どこからアクセスしても、ファイルの最新バージョンが表示されます。」んじゃなかったんか〜い!

macOSをクリーンインストールして、移行アシスタントで設定情報やアプリケーション、アカウントデータを書き戻すという操作を実行する機会は割と頻繁にあるので、これまでも、そのたびにファイルの最新データが失われていたのだ。

うひゃ〜、なんて便利なの。 さすがアップルのクラウドサービス(褒めていない)。

“It just works”

多分、誰もそんなこと望んでないと思うけどね。

実はこれ、データが完全に消えたわけではなく、書類のバージョンにコンフリクト(衝突、競合)が起きた状態になっているのだ。コンフリクト状態を検出できるアプリケーションなら、上書きされたファイルを開こうとすると、次のようなダイアログボックスが表示される。

変更内容を同期できません。残すバージョンを選択してください。

ここで、タイムスタンプが新しいほうを選べば、古いファイルで上書きされた本来の最新ファイルを復活させることができる。

XcodeやVisual Studio CodeあるいはQuick Lookなどコンフリクトを意に介さないソフトウェアからは、単にファイルの中身が消えたようにしか見えないので困ったもんだ。

Gitを使っているプログラマーなら、タイムスタンプが新しいほうのファイルの内容が単純増加しているだけなんだから、fast-forwardでサクッと自動マージできるパターンじゃん。なんでコンフリクト判定なの? と、首をかしげるだろう。

macOSユーザガイド「MacのiCloud Driveで書類のバージョンに不一致がある場合」 https://support.apple.com/ja-jp/guide/mac-help/mh40780/mac には次のように書かれている。

インターネットに接続されていない複数のデバイスを使用して、iCloud Driveに保存されている同じ書類を編集しているときに、競合が発生することがあります。デバイスがオンラインになると、変更がiCloud Driveに保存されます。書類を表示すると、保存したい書類のバージョンを選択するよう求めるメッセージが表示されます。

今回の場合、書類を編集していたのはMac mini側だけであり、MacBook Air側では書類を編集するどころか、開いてすらいない。 であるからして、そもそも、これで競合がおきること自体おかしい。

なぜ、MacBook Air側では何も変更していない過去の書類を最新版としてiCloud Driveにアップロードしてしまうのか? クラウド上の最新版をダウンロードして同期するのが筋ってもんだろ。 理解に苦しむ。

iCloud Driveの同期アルゴリズムがイカレているとしか思えない。

が、最高の UI/UX on the planet を提供しているアップルに言わせれば、「iCloud Driveが信頼できないのであれば使わないことをお勧めします」(あんたの使い方が悪いだけ)ってことらしい。

“It just works”

ガンコ親父がやってる、こだわりのラーメン屋よろしく「出されたもん黙って食ってりゃいいんだよ。俺のルールに従えねえやつは、客じゃねえ。お代は結構、帰ってくんな」みたいな対応がステキ。

ごもっとも、確かにその通り、客を選ぶのは大事だ。

なお、FinderやSpotlight検索で、競合が発生しているファイルを探し出すことはできない。「書類のバージョンに不一致がある」かどうか確かめるためには、いちいちファイルを開かねばならない。 このため、これまでに、意図せず古いバージョンに置き換えられたファイルがいったいいくつあるのかは不明である。

関連記事: 「さよならDropbox、こんにちはiCloud Drive

0 件のコメント:

コメントを投稿