Watch at EaseHistorias. Respuestas. Perspectiva.

Guías prácticas · GUÍA PRÁCTICA

Copia notas y adjuntos seleccionados de Obsidian con una lista verificada

Para un lote pequeño comprobado a mano, usa un manifiesto literal de rutas relativas a la bóveda, revisa cada destino, copia solo a una carpeta nueva y verifica el SHA-256 de cada archivo antes de abrir el resultado como otra bóveda.

Un manifiesto de archivos marcado relaciona tarjetas de notas y adjuntos elegidos en un árbol de origen con las mismas rutas relativas en un árbol nuevo.
Ilustración conceptual original: revisa el plan exacto de copia por rutas relativas antes de permitir escrituras. Watch at Ease

Mover una bóveda completa de Obsidian es fácil porque una bóveda es una carpeta normal. Mover solo unas notas con los adjuntos exactos que utilizan es más difícil: existen varios estilos de enlace y las carpetas de adjuntos son configurables, por lo que no es seguro adivinar a partir del nombre de archivo.

Esta guía tiene un alcance deliberadamente estrecho. Tú identificas manualmente los archivos locales directos, enumeras las rutas relativas exactas a la bóveda, revisas el plan, copias solo a un destino nuevo y verificas cada archivo listado con SHA-256. No analiza Markdown ni garantiza que la lista de dependencias esté completa.

1. Úsalo solo para un conjunto pequeño que puedas inventariar a mano

Deja inactiva la bóveda de origen. Revisa uno por uno todos los archivos incrustados y enlaces locales de las notas seleccionadas. La documentación de Obsidian describe los adjuntos como archivos normales de la bóveda cuya ubicación puede depender de la configuración de la bóveda y de la carpeta. Identifica el archivo real en el disco en vez de inferir la ruta a partir del texto visible del enlace.

No es un exportador automático: no sigue enlaces Wiki, no recorre de forma recursiva las notas enlazadas, no decodifica todos los formatos de URL ni descubre recursos omitidos. Si necesitas cerrar las dependencias automáticamente, usa un complemento vigente o un exportador específico.

2. Crea un manifiesto literal y un inventario del origen

Crea fuera de la bóveda un archivo de texto UTF-8. Escribe una ruta relativa exacta por línea, con barras normales; por ejemplo, Notes/Project brief.md, Assets/diagram.png y Other/diagram.png en líneas separadas. Conservar los directorios permite distinguir archivos con el mismo nombre. Se rechazan las líneas vacías, segmentos de punto, recorridos hacia directorios superiores, rutas absolutas, barras inversas y entradas duplicadas o equivalentes al ignorar mayúsculas y minúsculas.

Registra la bóveda de origen, el destino nuevo, el SHA-256 del manifiesto y el número de archivos, y conserva una copia de seguridad del origen. La prueba compara hashes de contenido, no horas de acceso, atributos extendidos ni todos los metadatos del sistema de archivos.

3. Ejecuta primero un plan sin escrituras

Usa «Descargar el script de copia (.py)» al final, o abre https://watchatease.com/news/tools/manifest-copy-1a2d9dca.py y guarda el archivo original como manifest_copy.py. Este procedimiento se probó en Linux con Python 3.12.14. En la carpeta de descarga, ejecuta sha256sum manifest_copy.py: el resultado debe ser 1a2d9dca3bc1e66feb55e3f639d9b32318084266ba76494f5a2f079b4a0773e2; detente si difiere. Después ejecuta: python3 manifest_copy.py --source '/path/to/source-vault' --manifest '/path/to/paths.txt' --target '/path/to/new-vault'. Sustituye las tres rutas de ejemplo por las tuyas. Sin --apply, solo muestra rutas exactas, recuentos de bytes y hashes, con writesPerformed:false.

Lee el plan completo y comprueba todos los destinos. La herramienta recorre todo el árbol de origen para detectar enlaces simbólicos y colisiones después de normalizar con NFC y omitir mayúsculas y minúsculas; por eso, un enlace simbólico no relacionado o la combinación Assets/A.PNG y Assets/a.png también bloquean la ejecución. No eludas ese rechazo.

4. Aplica una sola vez a un destino nuevo

Cuando el plan sea correcto, vuelve a ejecutar con --apply. El destino no debe existir, su directorio padre sí debe existir y no puede estar dentro de la bóveda de origen. La creación exclusiva convierte un destino existente en un error en lugar de sobrescribirlo. Solo se copian los archivos enumerados.

Antes de abrir la nueva bóveda, lee el resultado de la copia. Debe mostrar ok:true y allListedFilesVerified:true; cada archivo listado debe tener verified:true y hashes SHA-256 iguales para el original, la copia y el origen después de copiar. Esto solo verifica los bytes enumerados. No comprueba que hayas incluido todos los adjuntos ni que Obsidian muestre correctamente las notas copiadas.

5. Verifica antes de abrir o eliminar nada

Trata el recibo como una comprobación del sistema de archivos, no como una aceptación de Obsidian. Confirma el número y las rutas, compara de forma independiente los hashes de destino y después abre la carpeta nueva como otra bóveda para revisar las notas y los adjuntos. Los casos de prueba no comprobaron la representación de la interfaz.

Mantén el origen sin cambios hasta que la nueva bóveda supere la revisión y tenga su propia copia de seguridad. Si falta un archivo, corrige la lista manual y utiliza otro destino inexistente en vez de fusionar los datos con un directorio parcial.

6. Trata los rechazos como límites de seguridad

Una aplicación fallida puede dejar un destino parcial. Conserva el error, revísalo y elige otro destino que no exista. Los archivos ausentes, entradas que son directorios, recorridos de ruta, rutas absolutas, duplicados, enlaces simbólicos, un destino existente y las colisiones de mayúsculas o Unicode son rechazos deliberados.

Los 26 casos solo se ejecutaron en Linux con Python 3.12.14 y supusieron que no había cambios simultáneos. No se probaron el comportamiento de rutas de Windows, la normalización de macOS, la representación gráfica de Obsidian ni los clientes de sincronización. Para esas condiciones o para un lote grande, evalúa un exportador o complemento mantenido y haz copias de seguridad de ambas bóvedas.

Filas de huellas genéricas comparan los valores de origen, copia y origen posterior a la copia, mientras una fila distinta se aísla como advertencia.
Ilustración conceptual original: acepta cada archivo solo cuando coincidan los hashes del origen, la copia y el origen posterior, y aísla una ejecución parcial. Watch at Ease