Obsidian を macOS で快適化:フォルダ構成・iCloud 排他回避・自動バックアップ

Obsidian を macOS で使う際、フォルダ構成の迷い・iCloud 同期の競合・バックアップ忘れという 3 つの課題に直面していませんか?本記事では、これらを一気に解決する実践的な設定方法をご紹介します。
macOS の特性を理解し、Obsidian の機能を最大限に活かすことで、ストレスフリーな執筆環境を実現できるでしょう。
macOS × Obsidian で直面する 3 つの課題
Obsidian を macOS で使い始めると、予期せぬ問題に遭遇することがあります。特に多くの方が悩まされるのが、以下の 3 つの課題です。
これらは一見別々の問題に見えますが、実は相互に関連しており、総合的な対策が必要になります。
フォルダ構成の迷い
Obsidian で最初に悩むのが「どのようにフォルダを整理すべきか」という問題です。
ノートが増えるにつれて、分類方法やフォルダ階層をどう設計すべきか分からなくなってしまいます。特に、添付ファイルやプラグイン設定ファイルの配置場所に迷う方が多いでしょう。
適切なフォルダ構成がないと、以下のような問題が発生します:
- ノートの検索に時間がかかる
- 関連ファイルが見つからない
- プラグインが正しく動作しない
- バックアップ時に不要なファイルまで含まれる
一般的なフォルダ構成の問題点
# | 問題点 | 発生する影響 |
---|---|---|
1 | フラットな構造(フォルダなし) | 検索性が著しく低下し、管理が困難 |
2 | 過度に深い階層構造 | パス名が長くなり、リンク切れのリスク増加 |
3 | 添付ファイルの分散配置 | ファイル管理が煩雑になり、容量把握が困難 |
4 | プラグイン設定の混在 | バックアップ時の選別が難しく、同期トラブルの原因に |
以下の図は、整理されていないフォルダ構成と最適化されたフォルダ構成の違いを示しています。
mermaidflowchart TB
subgraph bad["❌ 非推奨: フラット構造"]
vault1["Vault ルート"] --> note1["ノート1.md"]
vault1 --> note2["ノート2.md"]
vault1 --> img1["画像1.png"]
vault1 --> img2["画像2.png"]
vault1 --> plugin1[".obsidian/"]
vault1 --> note3["ノート3.md"]
vault1 --> etc["...100個以上のファイル"]
end
subgraph good["✅ 推奨: 構造化された配置"]
vault2["Vault ルート"] --> dailies["📅 Daily Notes/"]
vault2 --> projects["📁 Projects/"]
vault2 --> attachments["📎 Attachments/"]
vault2 --> templates["📝 Templates/"]
vault2 --> obsidian2[".obsidian/"]
dailies --> daily1["2024-01-01.md"]
projects --> proj1["プロジェクトA/"]
attachments --> imgs["images/"]
attachments --> files["files/"]
end
構造化することで、ノートの分類が明確になり、管理が格段に楽になります。
iCloud 同期時の排他制御問題
macOS ユーザーの多くが iCloud Drive に Vault を配置していますが、これが深刻な問題を引き起こすことがあります。
iCloud Drive は複数デバイス間でファイルを同期する便利な機能ですが、Obsidian の特定のファイルとは相性が悪いのです。特に .obsidian
フォルダ内のキャッシュファイルや、プラグインの一時ファイルが頻繁に更新されると、同期の競合が発生します。
発生する主なエラー
typescript// Obsidian コンソールに表示される典型的なエラー
Error: EBUSY: resource busy or locked, open '/Users/username/Library/Mobile Documents/iCloud~md~obsidian/Documents/MyVault/.obsidian/workspace.json'
このエラーは、iCloud が同期処理中にファイルをロックしているため、Obsidian がファイルにアクセスできない状況を示しています。
排他制御問題が起きる仕組み
以下の図は、iCloud 同期時に競合が発生するプロセスを示しています。
mermaidsequenceDiagram
participant O as Obsidian
participant F as ファイルシステム
participant iC as iCloud Daemon
O->>F: workspace.json を書き込み
F->>iC: 変更を検知
iC->>F: ファイルをロック(同期開始)
O->>F: workspace.json を再度読み込み
F-->>O: Error: EBUSY (ファイルロック中)
Note over O,iC: ⚠️ 排他制御による競合発生
iC->>F: 同期完了・ロック解除
O->>F: リトライで読み込み成功
この問題を放置すると、設定の不整合やデータ損失のリスクがあります。
問題が発生しやすいファイル
# | ファイル・フォルダ | 更新頻度 | 競合リスク |
---|---|---|---|
1 | .obsidian/workspace.json | 起動・終了時に毎回 | ★★★ 非常に高い |
2 | .obsidian/cache/ | リアルタイムで頻繁 | ★★★ 非常に高い |
3 | .obsidian/plugins/*/data.json | プラグイン使用時 | ★★☆ 中程度 |
4 | .trash/ | ノート削除時 | ★☆☆ 低い |
これらのファイルを iCloud 同期から除外することが解決策となります。
バックアップの自動化不足
最後の課題は、バックアップの自動化が十分でないことです。
多くの方が「iCloud に保存しているからバックアップは不要」と考えていますが、これは危険な誤解です。iCloud は同期サービスであり、誤って削除したファイルや破損したデータも同期されてしまいます。
バックアップが必要な理由
- 誤操作からの保護: ノートを誤って削除した場合の復元
- プラグイン障害への対応: プラグインの不具合でデータが破損した場合
- バージョン管理: 過去の状態に戻したい場合
- 端末故障時の復旧: Mac が故障した際の迅速な復旧
以下の図は、適切なバックアップ戦略を示しています。
mermaidflowchart LR
vault["Obsidian<br/>Vault"] --> |"リアルタイム同期"| icloud["iCloud Drive"]
vault --> |"定期バックアップ<br/>(1日1回)"| local["ローカル<br/>バックアップ"]
vault --> |"履歴管理<br/>(コミット時)"| git["Git<br/>リポジトリ"]
icloud -.-> |"誤削除も同期"| risk1["⚠️ リスク"]
local --> |"復元可能"| safe1["✅ 安全"]
git --> |"履歴から復元"| safe2["✅ 安全"]
style risk1 fill:#ffcccc
style safe1 fill:#ccffcc
style safe2 fill:#ccffcc
iCloud だけでなく、ローカルバックアップと Git 管理を組み合わせることで、多層的な保護が実現できます。
快適化のための 3 つの解決策
ここからは、前述の課題を解決するための具体的な方法をご紹介します。
それぞれの解決策は独立していますが、組み合わせることでより強力な効果を発揮するでしょう。
最適なフォルダ構成の設計
Obsidian のフォルダ構成は、用途別・タイプ別の分類を基本とします。
以下は、多くのユーザーに適用できる汎用的な構成例です。
推奨フォルダ構造
yamlVault/
├── 📅 Daily Notes/ # デイリーノート専用
│ ├── 2024/
│ │ ├── 01-January/
│ │ └── 02-February/
│ └── 2025/
│
├── 📁 Projects/ # プロジェクト別ノート
│ ├── Project-A/
│ │ ├── meetings/
│ │ └── docs/
│ └── Project-B/
│
├── 📚 Knowledge Base/ # 知識ベース・永続ノート
│ ├── Technology/
│ ├── Business/
│ └── Personal/
│
├── 📎 Attachments/ # 添付ファイル集約
│ ├── images/
│ ├── files/
│ └── audio/
│
├── 📝 Templates/ # テンプレート集
│ ├── daily-note.md
│ ├── meeting-note.md
│ └── project-note.md
│
├── 🗑️ Archive/ # アーカイブ
│ └── old-projects/
│
└── .obsidian/ # Obsidian 設定(自動生成)
├── plugins/
├── themes/
└── workspace.json
この構造の利点は以下の通りです:
# | メリット | 詳細 |
---|---|---|
1 | 検索性の向上 | フォルダ名で絞り込み検索が容易 |
2 | 添付ファイルの一元管理 | 容量管理とバックアップが簡単 |
3 | テンプレート活用 | 新規ノート作成の効率化 |
4 | スケーラビリティ | ノートが増えても構造を維持しやすい |
Obsidian 設定でのフォルダ指定
フォルダ構成を作成したら、Obsidian の設定で各フォルダを指定します。
json// .obsidian/app.json の設定例
{
"attachmentFolderPath": "Attachments",
"newFileLocation": "folder",
"newFileFolderPath": "Knowledge Base",
"useMarkdownLinks": true,
"showLineNumber": true
}
この設定により、新規ノートや添付ファイルが自動的に適切なフォルダに配置されます。
設定項目の説明:
attachmentFolderPath
: 添付ファイルの保存先フォルダnewFileLocation
: 新規ファイルの作成場所(folder
を指定)newFileFolderPath
: 新規ファイルのデフォルトフォルダuseMarkdownLinks
: Markdown 形式のリンクを使用
Daily Notes プラグインの設定
Daily Notes を使用する場合は、専用の設定も必要です。
json// .obsidian/daily-notes.json
{
"folder": "Daily Notes/2025/01-January",
"format": "YYYY-MM-DD",
"template": "Templates/daily-note.md"
}
これにより、デイリーノートが指定フォルダに自動作成されます。
iCloud 排他回避の具体的手法
iCloud の排他制御問題を解決するには、頻繁に更新されるファイルを同期対象から除外します。
macOS では .nosync
拡張子を使う方法と、シンボリックリンクを使う方法の 2 つがあります。
方法 1: .nosync 拡張子による除外
最もシンプルな方法は、フォルダ名に .nosync
を追加することです。
bash# キャッシュフォルダを同期対象から除外
cd ~/Library/Mobile\ Documents/iCloud~md~obsidian/Documents/MyVault/.obsidian
mv cache cache.nosync
.nosync
を付けたフォルダは、iCloud 同期から自動的に除外されます。
対象とすべきフォルダ:
bash# 以下のフォルダに .nosync を追加
.obsidian/cache/ → .obsidian/cache.nosync/
.obsidian/workspace → .obsidian/workspace.nosync (ファイルの場合は後述の方法を使用)
.trash/ → .trash.nosync/
ただし、この方法には制限があります:
- 個別ファイルには使えない(フォルダのみ)
- プラグインが .nosync フォルダを認識しない場合がある
これらの問題を解決するには、シンボリックリンクを使います。
方法 2: シンボリックリンクによる柔軟な管理
シンボリックリンクを使うと、iCloud 外にファイルを配置しつつ、Obsidian からは通常通りアクセスできます。
以下の図は、シンボリックリンクの仕組みを示しています。
mermaidflowchart LR
subgraph icloud["iCloud Drive 領域"]
vault["MyVault/"] --> obsidian[".obsidian/"]
obsidian --> symlink["cache → シンボリックリンク"]
end
subgraph local["ローカルストレージ"]
real_cache["実体: cache/"]
end
symlink -.->|"参照"| real_cache
icloud_daemon["iCloud Daemon"] -.->|"同期しない"| symlink
obsidian_app["Obsidian"] -->|"透過的にアクセス"| symlink
style real_cache fill:#ccffcc
style symlink fill:#cce5ff
Obsidian はシンボリックリンク経由で実体にアクセスし、iCloud は実体を同期しません。
シンボリックリンクの作成手順
ステップバイステップで設定していきます。
bash# ステップ1: Obsidian を終了
# アプリケーションメニューから完全に終了させる
# ステップ2: 環境変数を設定(作業を簡単にするため)
VAULT_PATH=~/Library/Mobile\ Documents/iCloud~md~obsidian/Documents/MyVault
LOCAL_CACHE=~/.obsidian-local/MyVault
環境変数を設定することで、以降のコマンドがシンプルになります。
bash# ステップ3: ローカルストレージにディレクトリを作成
mkdir -p "$LOCAL_CACHE"
# ステップ4: 既存のキャッシュを移動
mv "$VAULT_PATH/.obsidian/cache" "$LOCAL_CACHE/cache"
既存のキャッシュを iCloud 外のローカルストレージに移動します。
bash# ステップ5: シンボリックリンクを作成
ln -s "$LOCAL_CACHE/cache" "$VAULT_PATH/.obsidian/cache"
# ステップ6: 確認
ls -la "$VAULT_PATH/.obsidian/" | grep cache
# 出力例: lrwxr-xr-x 1 user staff 45 Jan 15 10:30 cache -> /Users/user/.obsidian-local/MyVault/cache
ls -la
で ->
が表示されれば、シンボリックリンクが正しく作成されています。
workspace.json の個別ファイル対応
workspace.json
のような個別ファイルも同様に処理できます。
bash# workspace.json をローカルに移動してリンク作成
mv "$VAULT_PATH/.obsidian/workspace.json" "$LOCAL_CACHE/workspace.json"
ln -s "$LOCAL_CACHE/workspace.json" "$VAULT_PATH/.obsidian/workspace.json"
これで、頻繁に更新されるファイルが iCloud 同期から除外されます。
動作確認
設定後、以下の手順で動作を確認します。
bash# Obsidian を起動して正常に動作するか確認
# iCloud の同期状況を確認
brctl log --wait --shorten | grep MyVault
# cache/ や workspace.json が同期ログに出なければ成功
brctl
は iCloud の診断ツールで、同期状況をリアルタイムで確認できます。
自動バックアップの実装方法
最後に、自動バックアップの仕組みを構築します。
macOS の Automator と rsync を組み合わせることで、シンプルかつ強力なバックアップシステムが作れます。
バックアップ戦略の全体像
以下の図は、3 層のバックアップ戦略を示しています。
mermaidflowchart TB
vault["Obsidian Vault<br/>(作業領域)"]
subgraph layer1["第1層: リアルタイム同期"]
icloud["iCloud Drive<br/>(デバイス間同期)"]
end
subgraph layer2["第2層: 定期バックアップ"]
daily["Daily Backup<br/>(外付けHDD/NAS)"]
end
subgraph layer3["第3層: バージョン管理"]
git_local["Git リポジトリ<br/>(ローカル)"]
git_remote["Git リモート<br/>(GitHub/GitLab)"]
end
vault -->|"自動同期"| icloud
vault -->|"1日1回 自動"| daily
vault -->|"手動コミット"| git_local
git_local -->|"プッシュ"| git_remote
style layer1 fill:#e1f5fe
style layer2 fill:#f3e5f5
style layer3 fill:#e8f5e9
複数のバックアップ層を持つことで、あらゆる障害から保護できます。
rsync によるバックアップスクリプト
まず、rsync を使った基本的なバックアップスクリプトを作成します。
bash#!/bin/bash
# ファイル名: obsidian-backup.sh
# バックアップ設定
VAULT_PATH="$HOME/Library/Mobile Documents/iCloud~md~obsidian/Documents/MyVault"
BACKUP_BASE="$HOME/Documents/ObsidianBackups"
DATE=$(date +%Y-%m-%d_%H-%M-%S)
BACKUP_PATH="$BACKUP_BASE/$DATE"
LATEST_LINK="$BACKUP_BASE/latest"
環境変数で Vault のパスとバックアップ先を定義します。
bash# バックアップディレクトリ作成
mkdir -p "$BACKUP_PATH"
# rsync でバックアップ実行
rsync -av \
--exclude='.obsidian/cache.nosync' \
--exclude='.obsidian/workspace.nosync' \
--exclude='.trash' \
--exclude='.DS_Store' \
"$VAULT_PATH/" "$BACKUP_PATH/"
rsync
の -av
オプションは、アーカイブモード(パーミッション保持)と詳細表示を有効にします。
rsync オプションの説明:
オプション | 意味 | 効果 |
---|---|---|
-a | アーカイブモード | タイムスタンプ、パーミッションを保持 |
-v | 詳細表示 | コピーしたファイルを表示 |
--exclude | 除外パターン | 指定したパスを除外 |
bash# 最新バックアップへのシンボリックリンク更新
rm -f "$LATEST_LINK"
ln -s "$BACKUP_PATH" "$LATEST_LINK"
# 古いバックアップを削除(30日以上前)
find "$BACKUP_BASE" -maxdepth 1 -type d -mtime +30 -exec rm -rf {} \;
# 完了メッセージ
echo "バックアップ完了: $BACKUP_PATH"
30 日以上前のバックアップを自動削除することで、ストレージを節約できます。
スクリプトの実行権限設定
作成したスクリプトに実行権限を付与します。
bash# スクリプトを保存
chmod +x ~/Documents/obsidian-backup.sh
# 手動実行でテスト
~/Documents/obsidian-backup.sh
正常にバックアップが作成されるか確認しましょう。
Automator でバックアップを自動化
次に、Automator を使ってスクリプトを定期実行します。
Automator アプリケーションの作成手順:
- Automator を起動(アプリケーションフォルダから)
- 「カレンダーアラーム」タイプを選択
- 「シェルスクリプトを実行」アクションを追加
- シェルに
/bin/bash
を指定 - スクリプトパスを入力
bash# Automator のシェルスクリプトアクション内容
/Users/username/Documents/obsidian-backup.sh
実際のユーザー名に置き換えてください。
カレンダーで定期実行を設定
Automator ワークフローをカレンダーアラームとして保存します。
カレンダー設定手順:
- Automator で「ファイル > 保存」
- ファイル形式: 「カレンダーアラーム」
- 名前: 「Obsidian Daily Backup」
- 保存すると、カレンダーアプリが自動で開く
- イベントの繰り返し設定: 「毎日」
- 時刻: 「21:00」(作業終了後がおすすめ)
これで、毎日自動的にバックアップが実行されます。
Git によるバージョン管理(オプション)
さらに高度な管理には Git を活用します。
bash# Vault を Git リポジトリ化
cd "$VAULT_PATH"
git init
# .gitignore を作成
cat > .gitignore << 'EOF'
.obsidian/cache.nosync/
.obsidian/workspace.nosync
.obsidian/workspace.json
.trash/
.DS_Store
EOF
.gitignore
により、不要なファイルをバージョン管理から除外します。
bash# 初回コミット
git add .
git commit -m "Initial commit: Obsidian Vault setup"
# リモートリポジトリ追加(GitHub などを使用)
git remote add origin https://github.com/username/obsidian-vault.git
git push -u origin main
これで、変更履歴を細かく管理できるようになります。
実装手順:ステップバイステップ
ここまでの解決策を、実際に設定する手順をまとめます。
順番通りに進めることで、スムーズに快適な環境を構築できるでしょう。
ステップ 1:フォルダ構成を整える
まず、Vault のフォルダ構成を最適化します。
1-1. 既存 Vault のバックアップ
作業前に必ずバックアップを取ります。
bash# Vault 全体を一時的にコピー
cp -r ~/Library/Mobile\ Documents/iCloud~md~obsidian/Documents/MyVault \
~/Desktop/MyVault_backup_$(date +%Y%m%d)
何か問題があっても、このバックアップから復元できます。
1-2. フォルダの作成
推奨構成のフォルダを作成します。
bash# Vault ディレクトリに移動
cd ~/Library/Mobile\ Documents/iCloud~md~obsidian/Documents/MyVault
# 必要なフォルダを一括作成
mkdir -p "Daily Notes"/{2024,2025}
mkdir -p "Projects"
mkdir -p "Knowledge Base"/{Technology,Business,Personal}
mkdir -p "Attachments"/{images,files,audio}
mkdir -p "Templates"
mkdir -p "Archive"
mkdir -p
により、親フォルダも含めて一度に作成できます。
1-3. 既存ノートの移動
既存のノートを適切なフォルダに移動します。
bash# 例: デイリーノートを移動
mv 2024-*.md "Daily Notes/2024/"
mv 2025-*.md "Daily Notes/2025/"
# 例: 画像ファイルを移動
find . -maxdepth 1 -type f \( -name "*.png" -o -name "*.jpg" \) -exec mv {} "Attachments/images/" \;
find
コマンドで画像ファイルを検索し、一括移動します。
1-4. Obsidian 設定の更新
Obsidian の設定ファイルを編集します。
json// .obsidian/app.json
{
"attachmentFolderPath": "Attachments/images",
"newFileLocation": "folder",
"newFileFolderPath": "Knowledge Base",
"useMarkdownLinks": true,
"showLineNumber": true,
"showFrontmatter": true
}
設定を保存したら、Obsidian を再起動して反映させます。
1-5. テンプレートの作成
基本的なテンプレートを作成しておきます。
markdown<!-- Templates/daily-note.md -->
# {{date:YYYY-MM-DD}}
# 📝 今日のタスク
- [ ]
# 💡 メモ
# 🔗 関連ノート
{{date}}
は Templater プラグインなどで自動置換されます。
ステップ 2:iCloud 設定を最適化する
次に、iCloud の排他制御問題を解決します。
2-1. Obsidian を完全終了
設定変更前に、Obsidian を必ず終了させます。
bash# プロセスが完全に終了しているか確認
ps aux | grep -i obsidian
# 何も表示されなければ OK
バックグラウンドプロセスが残っていないことを確認しましょう。
2-2. ローカルストレージの準備
iCloud 外にディレクトリを作成します。
bash# ローカルストレージ用ディレクトリ作成
mkdir -p ~/.obsidian-local/MyVault
# パーミッション確認
ls -ld ~/.obsidian-local/MyVault
# drwxr-xr-x と表示されれば OK
適切な権限が設定されていることを確認します。
2-3. キャッシュの移動とリンク作成
頻繁に更新されるファイルを移動します。
bash# 環境変数設定
VAULT=~/Library/Mobile\ Documents/iCloud~md~obsidian/Documents/MyVault
LOCAL=~/.obsidian-local/MyVault
# cache フォルダを移動
mv "$VAULT/.obsidian/cache" "$LOCAL/cache"
ln -s "$LOCAL/cache" "$VAULT/.obsidian/cache"
# workspace.json を移動
mv "$VAULT/.obsidian/workspace.json" "$LOCAL/workspace.json"
ln -s "$LOCAL/workspace.json" "$VAULT/.obsidian/workspace.json"
シンボリックリンクにより、透過的にアクセスできます。
2-4. .trash フォルダの処理
ゴミ箱フォルダも同期対象から除外します。
bash# .trash を .trash.nosync にリネーム
mv "$VAULT/.trash" "$VAULT/.trash.nosync"
Obsidian は .trash.nosync
も認識するため、問題なく動作します。
2-5. 動作確認
Obsidian を起動して、正常に動作するか確認します。
bash# Obsidian を起動
open -a Obsidian
# 別ターミナルで iCloud ログを監視
brctl log --wait --shorten | grep -E "(cache|workspace)"
# 何も表示されなければ、同期から除外されている
同期ログに cache
や workspace
が出なければ成功です。
トラブルシューティング
もし問題が発生したら、以下を確認します。
# | エラー内容 | 対処方法 |
---|---|---|
1 | Obsidian が起動しない | シンボリックリンクのパスを確認 ls -la |
2 | 設定が保存されない | ローカルフォルダのパーミッション確認 |
3 | プラグインが動作しない | プラグインフォルダは iCloud に残す |
4 | エラーメッセージが出る | Obsidian を完全終了して再起動 |
エラーが解消しない場合は、バックアップから復元して再度試してください。
ステップ 3:自動バックアップを構築する
最後に、自動バックアップの仕組みを作ります。
3-1. バックアップスクリプトの作成
まず、スクリプトを作成します。
bash# スクリプト用ディレクトリ作成
mkdir -p ~/Scripts
# エディタでスクリプトを作成
nano ~/Scripts/obsidian-backup.sh
以下の内容を貼り付けます。
bash#!/bin/bash
# Obsidian 自動バックアップスクリプト
# 設定
VAULT_PATH="$HOME/Library/Mobile Documents/iCloud~md~obsidian/Documents/MyVault"
BACKUP_BASE="$HOME/Documents/ObsidianBackups"
DATE=$(date +%Y-%m-%d_%H-%M-%S)
BACKUP_PATH="$BACKUP_BASE/$DATE"
LATEST_LINK="$BACKUP_BASE/latest"
LOG_FILE="$BACKUP_BASE/backup.log"
# ログ出力関数
log() {
echo "[$(date +%Y-%m-%d\ %H:%M:%S)] $1" | tee -a "$LOG_FILE"
}
# バックアップ開始
log "バックアップ開始"
# ディレクトリ作成
mkdir -p "$BACKUP_PATH"
# rsync 実行
rsync -av \
--exclude='.obsidian/cache.nosync' \
--exclude='.obsidian/workspace.nosync' \
--exclude='.obsidian/workspace.json' \
--exclude='.trash.nosync' \
--exclude='.DS_Store' \
"$VAULT_PATH/" "$BACKUP_PATH/" >> "$LOG_FILE" 2>&1
# 結果チェック
if [ $? -eq 0 ]; then
log "バックアップ成功: $BACKUP_PATH"
else
log "エラー: バックアップ失敗"
exit 1
fi
ログ出力機能により、実行履歴を確認できます。
bash# 最新リンク更新
rm -f "$LATEST_LINK"
ln -s "$BACKUP_PATH" "$LATEST_LINK"
# 古いバックアップ削除(30日以上前)
find "$BACKUP_BASE" -maxdepth 1 -type d -mtime +30 -exec rm -rf {} \;
log "古いバックアップを削除しました"
# 完了
log "バックアップ完了"
Ctrl + O
で保存、Ctrl + X
で終了します。
3-2. 実行権限とテスト
スクリプトに実行権限を付与します。
bash# 実行権限付与
chmod +x ~/Scripts/obsidian-backup.sh
# テスト実行
~/Scripts/obsidian-backup.sh
正常に完了すれば、~/Documents/ObsidianBackups/
にバックアップが作成されます。
3-3. Automator ワークフロー作成
Automator で自動実行の設定をします。
手順:
- Automator.app を起動
- 「新規書類」→「カレンダーアラーム」を選択
- 左のアクションリストから「シェルスクリプトを実行」を検索
- ドラッグ&ドロップでワークフローエリアに配置
- シェル:
/bin/bash
を選択 - 以下のスクリプトを入力:
bash/Users/username/Scripts/obsidian-backup.sh
重要: username
を実際のユーザー名に置き換えてください。
3-4. カレンダーアラームの保存
Automator ワークフローを保存します。
- 「ファイル」→「保存」
- 名前:
Obsidian Daily Backup
- ファイル形式:
カレンダーアラーム
- 保存場所: デフォルト(
~/Library/Workflows/
) - 「保存」をクリック
カレンダー.app が自動的に開きます。
3-5. カレンダーで繰り返し設定
カレンダーアプリで定期実行を設定します。
- 新しく作成されたイベント「Obsidian Daily Backup」を開く
- 「繰り返し」:
毎日
- 時刻:
21:00
(または任意の時刻) - 「アラート」:
なし
(スクリプト実行のみ) - 「完了」をクリック
これで、毎日 21 時に自動バックアップが実行されます。
3-6. Git バージョン管理の追加(オプション)
さらに詳細な履歴管理には Git を使います。
bash# Vault を Git リポジトリ化
cd ~/Library/Mobile\ Documents/iCloud~md~obsidian/Documents/MyVault
git init
# .gitignore 作成
cat > .gitignore << 'EOF'
.obsidian/cache.nosync/
.obsidian/workspace.nosync
.obsidian/workspace.json
.trash.nosync/
.DS_Store
EOF
Git 管理から除外するファイルを指定します。
bash# 初回コミット
git add .
git commit -m "Initial commit: Vault setup with optimized structure"
# GitHub にプッシュ(事前にリポジトリ作成が必要)
git remote add origin https://github.com/username/obsidian-vault.git
git branch -M main
git push -u origin main
以降は、重要な変更時に手動でコミット・プッシュします。
3-7. バックアップの確認方法
バックアップが正しく動作しているか確認します。
bash# バックアップ一覧表示
ls -lt ~/Documents/ObsidianBackups/
# 最新バックアップの内容確認
ls -la ~/Documents/ObsidianBackups/latest/
# ログファイル確認
tail -20 ~/Documents/ObsidianBackups/backup.log
定期的にログを確認し、エラーがないかチェックしましょう。
ステップ 4:動作確認とトラブルシューティング
すべての設定が完了したら、総合的な動作確認を行います。
4-1. フォルダ構成の確認
Vault のフォルダ構成が正しいか確認します。
bash# ツリー表示(tree コマンドがない場合は brew install tree)
tree -L 2 ~/Library/Mobile\ Documents/iCloud~md~obsidian/Documents/MyVault/
# 主要フォルダの存在確認
cd ~/Library/Mobile\ Documents/iCloud~md~obsidian/Documents/MyVault/
ls -la | grep -E "(Daily|Projects|Knowledge|Attachments|Templates)"
すべてのフォルダが存在していることを確認します。
4-2. iCloud 除外設定の確認
シンボリックリンクが正しく機能しているか確認します。
bash# シンボリックリンクの確認
ls -la ~/Library/Mobile\ Documents/iCloud~md~obsidian/Documents/MyVault/.obsidian/ | grep -E "(cache|workspace)"
# 期待される出力:
# lrwxr-xr-x cache -> /Users/username/.obsidian-local/MyVault/cache
# lrwxr-xr-x workspace.json -> /Users/username/.obsidian-local/MyVault/workspace.json
->
矢印が表示されていれば、リンクが正しく作成されています。
bash# iCloud 同期ログの監視(数分間実行)
brctl log --wait --shorten | grep -v "^$" | head -20
# cache や workspace が出力されなければ OK
同期ログに除外ファイルが出なければ成功です。
4-3. Obsidian の動作確認
Obsidian を起動して、各機能が正常に動作するか確認します。
確認項目:
# | 確認内容 | 確認方法 |
---|---|---|
1 | Vault が開けるか | Obsidian 起動時にエラーが出ないか |
2 | ノート作成 | Knowledge Base に新規ノート作成 |
3 | 画像添付 | ノートに画像を添付し、Attachments/images に保存されるか |
4 | デイリーノート | 新規デイリーノートが Daily Notes/ に作成されるか |
5 | プラグイン動作 | 使用中のプラグインがエラーなく動作するか |
6 | リンク機能 | ノート間のリンクが正しく機能するか |
すべて問題なければ、設定は完了です。
4-4. バックアップの動作確認
自動バックアップが正しく実行されるか確認します。
bash# バックアップスクリプトを手動実行
~/Scripts/obsidian-backup.sh
# バックアップ先を確認
ls -la ~/Documents/ObsidianBackups/latest/
# ログ確認
tail -10 ~/Documents/ObsidianBackups/backup.log
ログに「バックアップ成功」と表示されれば正常です。
bash# カレンダーアラームの確認
# カレンダー.app を開き、「Obsidian Daily Backup」イベントを確認
# 次回実行予定が表示されていれば OK
設定時刻になったら自動実行されます。
4-5. よくあるトラブルと解決方法
設定中に発生しやすい問題と対処法をまとめます。
問題 1: Obsidian が起動しない
bash# エラーログ確認
cat ~/Library/Logs/Obsidian/main.log | tail -20
# シンボリックリンクの再確認
ls -la ~/Library/Mobile\ Documents/iCloud~md~obsidian/Documents/MyVault/.obsidian/
解決策:
- シンボリックリンクのパスが正しいか確認
- リンク先のディレクトリが存在するか確認
- パーミッションエラーがないか確認
問題 2: iCloud 同期エラーが出る
bash# エラー内容確認
brctl log --wait --shorten | grep -i error
# iCloud 状態確認
brctl status
解決策:
- iCloud Drive が正常に動作しているか確認
.nosync
フォルダ名が正しいか確認- シンボリックリンクが iCloud 領域外を指しているか確認
問題 3: バックアップが実行されない
bash# スクリプトのパーミッション確認
ls -la ~/Scripts/obsidian-backup.sh
# -rwxr-xr-x と表示されるべき
# 手動実行でエラー確認
bash -x ~/Scripts/obsidian-backup.sh
解決策:
- 実行権限が付与されているか確認(
chmod +x
) - スクリプト内のパスが正しいか確認
- カレンダーアラームが有効になっているか確認
問題 4: 設定が反映されない
bash# Obsidian の設定ファイル確認
cat ~/Library/Mobile\ Documents/iCloud~md~obsidian/Documents/MyVault/.obsidian/app.json
解決策:
- JSON 形式が正しいか確認(カンマやブラケットの位置)
- Obsidian を完全に再起動
- 設定ファイルを手動編集後、Obsidian を起動
4-6. 復元テスト
最後に、バックアップからの復元が正しくできるかテストします。
bash# テスト用に一時的なノートを削除
rm ~/Library/Mobile\ Documents/iCloud~md~obsidian/Documents/MyVault/Knowledge\ Base/test.md
# バックアップから復元
cp ~/Documents/ObsidianBackups/latest/Knowledge\ Base/test.md \
~/Library/Mobile\ Documents/iCloud~md~obsidian/Documents/MyVault/Knowledge\ Base/
ノートが復元されれば、バックアップは正常に機能しています。
まとめ
本記事では、Obsidian を macOS で快適に使うための 3 つの最適化手法をご紹介しました。
フォルダ構成の最適化により、ノートの管理が格段に楽になります。用途別にフォルダを分けることで、検索性が向上し、添付ファイルも一元管理できるようになりました。
iCloud 排他制御の回避は、同期エラーを根本的に解決する重要な設定です。シンボリックリンクを活用することで、頻繁に更新されるキャッシュファイルを iCloud 同期から除外し、安定した動作を実現できます。
自動バックアップの構築により、データ損失のリスクを大幅に軽減できました。rsync と Automator を組み合わせた仕組みは、シンプルでありながら強力な保護を提供してくれます。
これらの設定は一度行えば、その後はメンテナンスフリーで動作し続けます。ぜひ本記事の手順を参考に、快適な Obsidian 環境を構築してください。
定期的にバックアップログを確認し、システムが正常に動作しているかチェックすることをおすすめします。
関連リンク
- article
Obsidian を macOS で快適化:フォルダ構成・iCloud 排他回避・自動バックアップ
- article
Obsidian Sync と iCloud/Dropbox/Google Drive:速度・信頼性・復旧性を実測比較
- article
Obsidian 同期衝突をゼロに近づける:重複ノート・コンフリクト解消の実践手順
- article
Obsidian 2025 年ロードマップ総ざらい:Properties/Canvas/Live Preview の現在地
- article
タグ vs フォルダ:Obsidian での最適なノート整理術
- article
Obsidian のバックリンク完全攻略:思考をつなげる最強の武器
- article
Dify を macOS でローカル検証:Docker Compose で最短起動する手順
- article
Prisma vs Drizzle vs Kysely:DX・型安全性・最適化余地を実測比較
- article
Cursor を macOS で最短導入:設定同期・拡張機能共存・プロキシ対応まで
- article
Cline セットアップ完全版(macOS):Homebrew・VSCode 拡張・権限設定
- article
Pinia をフレームワークレスで SSR:Nitro/Express 直結の同形レンダリング
- article
Claude 4.5 とは?性能・強み・できることを 3 分で把握する徹底解説
- blog
iPhone 17シリーズの発表!全モデルiPhone 16から進化したポイントを見やすく整理
- blog
Googleストアから訂正案内!Pixel 10ポイント有効期限「1年」表示は誤りだった
- blog
【2025年8月】Googleストア「ストアポイント」は1年表記はミス?2年ルールとの整合性を検証
- blog
Googleストアの注文キャンセルはなぜ起きる?Pixel 10購入前に知るべき注意点
- blog
Pixcel 10シリーズの発表!全モデル Pixcel 9 から進化したポイントを見やすく整理
- blog
フロントエンドエンジニアの成長戦略:コーチングで最速スキルアップする方法
- review
今の自分に満足していますか?『持たざる者の逆襲 まだ何者でもない君へ』溝口勇児
- review
ついに語られた業界の裏側!『フジテレビの正体』堀江貴文が描くテレビ局の本当の姿
- review
愛する勇気を持てば人生が変わる!『幸せになる勇気』岸見一郎・古賀史健のアドラー実践編で真の幸福を手に入れる
- review
週末を変えれば年収も変わる!『世界の一流は「休日」に何をしているのか』越川慎司の一流週末メソッド
- review
新しい自分に会いに行こう!『自分の変え方』村岡大樹の認知科学コーチングで人生リセット
- review
科学革命から AI 時代へ!『サピエンス全史 下巻』ユヴァル・ノア・ハラリが予見する人類の未来