使い方ガイド · 実用ガイド

確認済みリストで選んだ Obsidian ノートと添付ファイルをコピーする

手作業で確認できる少数のファイルなら、保管庫内の相対パスを明記したマニフェストを使い、すべてのコピー先を事前確認し、新規フォルダーだけにコピーして各ファイルを SHA-256 で検証してから、別の保管庫として開きます。

チェック済みのファイルマニフェストが、ソースフォルダーツリーで選んだノートと添付ファイルのカードを、新しいフォルダーツリーの同じ相対パスへ対応付けている。
オリジナルの概念図:書き込みを許可する前に、正確な相対パスのコピー計画を確認します。 Watch at Ease

Obsidian の保管庫全体は通常のフォルダーなので、丸ごとの移動は簡単です。一部のノートと実際に使われている添付ファイルだけを移すのは難しくなります。リンク表記には種類があり、添付フォルダーも設定で変わるため、ファイル名の推測は安全ではありません。

このガイドの範囲は意図的に狭くしています。直接参照するローカルファイルを手動で特定し、保管庫内の正確な相対パスを列挙し、計画を確認し、新規のコピー先だけに書き込み、マニフェスト内の各ファイルを SHA-256 で検証します。Markdown は解析せず、依存ファイルの完全性も保証しません。

1. 手作業で洗い出せる小規模な対象に限定する

ソース保管庫を使用していない状態にします。対象ノート内の埋め込みファイルとローカルリンクを 1 つずつ確認してください。Obsidian の資料では、添付ファイルは保管庫内の通常ファイルで、保存場所は保管庫やフォルダーの設定に左右されると説明されています。表示されたリンク文字列から推測せず、ディスク上の実ファイルを特定します。

これは自動エクスポーターではありません。Wiki リンクをたどらず、リンク先ノートを再帰処理せず、あらゆる URL 形式を解釈せず、漏れた素材も検出しません。依存関係を自動で閉じる必要がある場合は、現行のプラグインまたは専用エクスポーターを使用してください。

2. 文字どおりのマニフェストとソース一覧を作る

保管庫の外に UTF-8 テキストファイルを作ります。1 行につき正確な相対パスを 1 つ、スラッシュ区切りで記載します。例として Notes/Project brief.md、Assets/diagram.png、Other/diagram.png を別々の行に書きます。ディレクトリを維持すれば同名ファイルも区別できます。空行、ドットのパス要素、親ディレクトリへの移動、絶対パス、バックスラッシュ、重複または大文字小文字を無視すると同一になる項目は拒否されます。

ソース保管庫、新しいコピー先、マニフェストの SHA-256、ファイル数を記録し、ソースのバックアップを残します。この検証は内容ハッシュを比較するもので、アクセス時刻、拡張属性、すべてのファイルシステムメタデータは保持しません。

3. 最初に書き込みなしの計画を実行する

下の「コピースクリプトをダウンロード(.py)」を選ぶか、https://watchatease.com/news/tools/manifest-copy-1a2d9dca.py を開き、元のファイルを manifest_copy.py という名前で保存します。この手順は Linux の Python 3.12.14 で検証しました。ダウンロード先で sha256sum manifest_copy.py を実行し、結果が 1a2d9dca3bc1e66feb55e3f639d9b32318084266ba76494f5a2f079b4a0773e2 と一致しなければ中止します。続いて python3 manifest_copy.py --source '/path/to/source-vault' --manifest '/path/to/paths.txt' --target '/path/to/new-vault' を実行します。3 つの例示パスは実際のパスに置き換えます。--apply を付けなければ、正確なパス、バイト数、ハッシュを表示し、writesPerformed:false と報告するだけです。

計画全体を読み、すべてのコピー先を確認します。ツールはソースツリー全体のシンボリックリンクと、NFC 正規化後に大文字小文字を無視した衝突を検査します。そのため、無関係なシンボリックリンクや Assets/A.PNG と Assets/a.png の組み合わせでも停止します。この拒否を回避しないでください。

4. 未作成のコピー先に一度だけ適用する

計画が正しいことを確認したら、--apply を付けて再実行します。コピー先は存在していてはならず、その親ディレクトリは存在している必要があり、ソース保管庫の内部にも置けません。排他的なファイル作成により、既存のコピー先は上書きではなくエラーになります。コピーされるのは列挙したファイルだけです。

新しい保管庫を開く前に、適用結果を読みます。ok:true と allListedFilesVerified:true が表示され、列挙した各ファイルに verified:true があり、元データ、コピー、コピー後の元データの SHA-256 が一致していることを確認します。これは列挙したバイトだけの検証です。添付ファイルの漏れや Obsidian での正しい表示までは確認しません。

5. 開く、または削除する前に検証する

レシートはファイルシステムの確認結果であり、Obsidian の受け入れ試験ではありません。件数とパスを確認し、コピー先ハッシュを独立に比較してから、新しいフォルダーを別の保管庫として開き、ノートと添付ファイルを確認します。フィクスチャでは GUI 表示をテストしていません。

新しい保管庫の確認が完了し、独自のバックアップを作るまでは、ソースを変更しないでください。漏れたファイルがあれば、手作業のリストを修正し、部分的なディレクトリへ追加せず、別の未作成のコピー先を使用します。

6. 拒否を安全境界として扱う

適用に失敗すると、途中まで作成されたコピー先が残る場合があります。エラーを保存して内容を確認し、別の未作成のコピー先を選んでください。ファイル不足、ディレクトリ項目、パストラバーサル、絶対パス、重複、シンボリックリンク、既存のコピー先、大文字小文字または Unicode の衝突は、意図した拒否条件です。

26 件のフィクスチャは Linux の Python 3.12.14 だけで実行され、並行変更がないことを前提としました。Windows のパス処理、macOS の正規化、Obsidian の GUI 表示、同期クライアントは未検証です。これらの条件や大量処理では、保守されているエクスポーターやプラグインを検討し、両方の保管庫をバックアップしてください。

一般的なファイル指紋の行が元データ、コピー、コピー後の元データを比較し、不一致の 1 行を警告として分離している。
オリジナルの概念図:元データ、コピー、コピー後の元データのハッシュが一致したファイルだけを受け入れ、途中の実行は分離します。 Watch at Ease