Contents
iCloud 同期のリスクと対策
iCloud は双方向同期を前提としているため、端末上で起きた削除や衝突が即座にクラウドへ反映されます。この特性は便利ですが、バックアップが無い状態では「誤操作」=「データ喪失」 になり得ることを理解しておく必要があります。
データ消失シナリオ
iCloud の同期エラーで起こりやすいケースを整理します。
- 端末間の削除が伝搬:Mac でフォルダをゴミ箱に入れると、iCloud が即座に削除情報を iPhone に送ります。iPhone がオフライン中に同じファイルを編集していた場合、復元できないことがあります。
- ネットワーク障害による衝突:同期中に通信が途切れると、ローカルでの変更とサーバ側の状態が不整合になり、最新バージョンが失われやすくなります(Apple の公式サポート記事 [iCloud 同期エラーの対処] を参照)。
iCloud の仕組みと落とし穴
- 双方向同期:ローカルで削除 → サーバへ削除フラグ送信 → 他端末が同時に削除。
- バージョン管理の欠如:iCloud は「上書き」方式なので、過去のスナップショットは自動的には残りません(Apple が提供する「iCloud バックアップ」はデバイス全体のバックアップであり、個別ファイル単位の復元は困難)。
- 衝突解消が手動:同一ファイルを複数端末で同時に編集すると、macOS の Finder か iPhone の「iCloud Drive」アプリで手動でマージする必要があります。
対策の基本方針
- ローカルに別途バックアップ(例:Git リポジトリ)を持つ
- 定期的にスナップショットを取得し、iCloud だけに依存しない運用に切り替える
Git を活用した安全なバックアップ戦略
Git は分散型バージョン管理システムです。ローカルに全履歴が残るうえ、リモート(GitHub、GitLab、Gitea など)へプッシュすれば「二重保存」になります。この性質は Obsidian の Vault と相性抜群です。
Git の基本と Obsidian への適用
- コミット単位の履歴:ノートを編集したら
git add . && git commit -m "msg"が自動で走り、過去に遡って任意の時点に復元可能です。 - ローカルとリモートの分散保存:ネットワークが不安定でもローカルで作業でき、後から
git pushすればクラウドへ安全に同期できます(Git の公式マニュアル [Git Basics] を参照)。 - 無料プライベートリポジトリ:GitHub や GitLab は無料枠でも無制限のプライベートリポジトリを提供しているため、追加コストはほぼ発生しません。
GitHub(または自前サーバ)での運用例
| 項目 | iCloud のみ使用時 | Git バックアップ併用時 |
|---|---|---|
| データ復元 | 手動復旧が困難 | git checkout <hash> ですぐに復元 |
| 履歴管理 | なし | コミットごとに保存 |
| オフライン作業 | 同期待ちで遅延 | 完全ローカル操作可 |
| セキュリティ | iCloud アカウントが唯一の鍵 | PAT + プライベートリポジトリで多層防御 |
プラグイン不要の自動バックアップ実装
Obsidian Git プラグインは便利ですが、設定画面が多く初心者にとってハードルが高いです。ここでは OS 標準機能だけ で同等の自動化を構築する方法を示します。
macOS:Shortcuts + launchd(正しい呼び出し方)
macOS 13 以降は shortcuts run "<ショートカット名>" コマンドが公式に提供されています。launchd の plist にこのコマンドを登録すれば、バックグラウンドで定期実行できます。
- Shortcuts 作成
- アクション「シェルスクリプトを実行」へ以下のコードを貼り付ける(名前は
ObsidianBackupとします)。
bash
#!/bin/bash
VAULT_PATH="$HOME/ObsidianVault"
cd "$VAULT_PATH" || exit 1
git add .
git commit -m "auto backup $(date +%Y-%m-%dT%H:%M:%S)"
git push origin main
- launchd 用 plist 作成(
~/Library/LaunchAgents/com.backup.obsidian.plist)
xml
- 有効化
bash
launchctl unload ~/Library/LaunchAgents/com.backup.obsidian.plist 2>/dev/null
launchctl load -w ~/Library/LaunchAgents/com.backup.obsidian.plist
ポイント:
shortcuts runコマンドは macOS のシステムパスに含まれているので、フルパス指定は不要です。
Windows:タスク スケジューラ + PowerShell
Windows 標準のタスク スケジューラで PowerShell スクリプトを定期実行すれば、macOS と同等の自動化が可能です。
- PowerShell スクリプト (
C:\Scripts\obsidian_backup.ps1)
powershell
$vault = "C:\Users\$env:USERNAME\ObsidianVault"
Set-Location $vault
git add .
$msg = "auto backup $(Get-Date -Format 'yyyy-MM-ddTHH:mm:ss')"
git commit -m $msg
git push origin main
- タスク スケジューラで新規タスク作成
- トリガー:毎日 02:00 に開始、繰り返し間隔 1 hour。
- 操作:
powershell.exe -NoProfile -ExecutionPolicy Bypass -File "C:\Scripts\obsidian_backup.ps1" - 条件:「ネットワーク接続が利用可能なときのみ実行」へチェックを入れる。
ポイント:PowerShell の実行ポリシーは
-ExecutionPolicy Bypassで一時的に回避し、スクリプト自体は安全な場所に保存してください。
iPhone / iPad:ショートカットからリモート Mac を呼び出す
iOS の Shortcuts アプリは「SSH でコマンド実行」アクションをサポートしています。これを利用して、外出先でも手動または自動(例:特定の Wi‑Fi に接続時)に Mac 上のバックアップスクリプト を走らせます。
- Mac 側で SSH キー認証を設定(
~/.ssh/authorized_keysに iPhone の公開鍵を追加)。 - iOS ショートカット作成
- アクション「SSH でコマンドを実行」 → ホストは自宅の固定 IP、ユーザーは macOS のアカウント。
-
実行コマンド:
/usr/bin/shortcuts run "ObsidianBackup" -
トリガー例:Wi‑Fi が「HomeNetwork」に変わったら自動実行、または Siri に「ノートをバックアップ」と話しかけるだけで起動。
ポイント:iOS から直接
git pushはできませんが、Mac が常にオンラインであれば間接的に iPhone の変更もリモートへプッシュされます。
セキュリティと運用ベストプラクティス
バックアップは「データの保存」だけでなく 「安全な管理」 も重要です。ここでは認証情報・機密ファイルの取扱いを中心に解説します。
パーソナルアクセストークン(PAT)と Credential Manager の活用
- HTTPS 経由で自動化する場合は必ず PAT を使用(GitHub は 2021 年以降、パスワード認証を廃止)。
- 作成時に最小限のスコープ(
repoとworkflow)だけ付与し、有効期限は 90 日程度に設定。 - macOS では Keychain Access に、Windows では Credential Manager に保存し、スクリプト内では環境変数
GITHUB_TOKENを参照させます。
|
1 2 3 |
# .zshrc(macOS)例 export GITHUB_TOKEN=$(security find-generic-password -s "github-token" -w) |
.gitignore とファイル単位の暗号化
- 不要なファイルは除外:
.obsidian/plugins/や*.logなど、共有したくない項目は必ず.gitignoreに記載。
gitignore
# .gitignore の例
*.log
.obsidian/
secret/*.md # 機密情報だけ除外
- 機密ノートは暗号化:
git-cryptやgpgで特定ファイルを暗号化し、復号キーは別途安全に保管します。
コンフリクト回避と自動マージ戦略
- プル前のリベース:スクリプト冒頭で
git pull --rebase origin mainを実行し、ローカル変更を最新の履歴上に乗せます。失敗した場合はgit rebase --abortで安全に中止できます。 - 自動マージ設定:
git config merge.ff falseにして常にマージコミットを作成し、履歴が分かりやすくなるようにします。
|
1 2 3 4 5 6 |
# 自動リベース+マージ設定例(macOS / Windows 共通) git pull --rebase origin main || git rebase --abort git add . git commit -m "auto backup $(date +%Y-%m-%dT%H:%M:%S)" git push origin main |
ネットワーク障害時のリトライロジック
バックアップ実行中にインターネットが切れた場合、git push が失敗しスクリプトは終了します。以下のシンプルなリトライ機構で自動的に再送できます。
|
1 2 3 4 5 6 7 8 9 10 11 12 |
MAX_RETRY=3 count=0 while [ $count -lt $MAX_RETRY ]; do if git push origin main; then break else ((count++)) echo "Push failed ($count/$MAX_RETRY), retry in $((count*5))s..." sleep $((count*5)) fi done |
トラブルシューティングと復元手順
ネットワーク障害・認証エラーの対処
- ログ確認:
/tmp/obsidian_backup_err.log(macOS)や PowerShell の標準エラーログに出力されたメッセージを確認。 - PAT が期限切れの場合:GitHub の設定画面で新しいトークンを発行し、キーチェーン/Credential Manager を更新。
過去コミットからの復元手順(macOS・Windows 共通)
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
# 1. リポジトリをクローンまたは最新状態に pull git clone https://github.com/username/obsidian-backup.git ~/ObsidianVault-restore cd obsidian-backup # 2. 復元したい時点のハッシュを取得(git log) git log --oneline # ← 必要なコミット ID を確認 # 3. 任意のバージョンへチェックアウト git checkout <commit-hash> # 4. 必要なら特定ファイルだけ復元 git checkout <commit-hash> -- path/to/file.md |
- 注意点:
git checkout後はgit switch -(またはgit checkout main)で作業ブランチに戻すことを忘れずに。
失敗したプッシュのキューイング
スクリプトが git push に失敗した場合、エラーログと同時に failed_push.log を生成し、次回実行時に自動で再送します。
|
1 2 3 4 5 6 7 8 9 10 11 |
# push が失敗したらログへ追記 if ! git push origin main; then echo "$(date): push failed" >> ~/failed_push.log fi # 次回起動時にキューがあればリトライ if [ -s ~/failed_push.log ]; then echo "Retrying failed pushes..." # 再試行ロジック(上記リトライ例)を実行 fi |
まとめ
- iCloud のみでは削除や同期エラーが即座にデータ喪失につながる ため、別途バックアップが必須です。
- Git と GitHub(または自前サーバ)を組み合わせれば、履歴管理・二重保存・無料利用という三拍子が揃います。
- macOS の Shortcuts + launchd、Windows のタスク スケジューラ + PowerShell、iPhone の SSH ショートカット で、プラグインに依存しないシンプルかつ堅牢な自動バックアップが構築できます。
- PAT・Keychain・Credential Manager による認証管理、.gitignore と暗号化による機密情報保護、リベース+リトライロジックでのコンフリクト回避 が運用上の重要ポイントです。
- ネットワーク障害や認証期限切れに備えたログ・キューイング、そして Git の標準コマンドだけで復元できる手順 を把握しておけば、万が一のトラブルでも迅速にリカバリーできます。
これらの手順を実装すれば、Obsidian のノートは iCloud 依存から解放され、長期にわたって安全・確実に保存できる環境が完成します。ぜひ本ガイドを参考に、今すぐバックアップ体制を構築してください。