Автоматический бэкап в Git без плагинов

Опишу тут, как организовал контроль версий через гит у себя на ПК под windows. До этого я никогда не пользовался гитом, потому инструкция во многом рассказывает базовые вещи, но тем и полезнее она будет для таких же как я, кто понятия не имеет, что это за git такой.

Т.к. пк у меня запущен почти всегда, а обсидиан нет, мне кажется более удобным не использовать плагин для обсидиана, а делать синхронизацию при помощи скриптов. Тогда к примеру, изменения, вносимые на телефоне, по syncthing попадают на пк, а оттуда уходят в git, даже если обсидиан не открыт / открыто не основное хранилище.

Я использую git не для полноценного бэкапа, для этого у меня Duplicati, а именно для удобного просмотра изменений в файлах, т.к. мне понравилось представление этой инфы в git, с первого дня нашел полезным, восстанавливая конкретные кусочки текста. Потому репо не опубликовано, хранится лишь локально.

Инструкция:

1. Устанавливаем:

  1. Сам гит https://git-scm.com/ (все настройки оставил по умолчанию)
  2. И интерфейс для него, мне хватает базового для такого простого дела https://desktop.github.com/

2. Перед запуском в корне хранилища создаем файл .gitignore с прописанными внутри исключениями, к примеру:

.obsidian/
.obsidian_mobile/
.obsidian_mobile_lite/
.obsidian_pc/
.stfolder/
.stversions/

3. Создаем репозиторий в той же папке, в которой расположено хранилище. Если нужна синхронизация с Github, публикуем его.

В пути к репозиторию не должно быть кириллицы, иначе скрипты будут отрабатывать некорректно

4. Создаем скрипты для автоматических коммитов

Создаем 2 файла, кидаем их в папку .git, чтобы не мешались в воулте.

Файл Obsidian_git_sync.bat с содержимым:

@echo off
@SETLOCAL ENABLEDELAYEDEXPANSION
cd C:\Mega\Obsidian
git init
for /L %%n in (1,0,10) do (
git add .
git commit -m "!date! !time!"
timeout /T 300
)

Если нужен и пуш, добавить после git commit строчку git push origin master
Тут указываем путь к хранилищу cd C:\Mega\Obsidian
Тут указываем периодичность запуска в секундах timeout /T 300

Файл Obsidian_git_sync.vbs с содержимым:

Set objShell = WScript.CreateObject("WScript.Shell")
objShell.Run("C:/Mega/Obsidian/.git/Obsidian_git_sync.bat"), 0, True

Тут прописываем путь до первого файла, этот скрипт запускает первый скрипт в фоне.

5. Добавляем файл Obsidian_git_sync.vbs в автозапуск

Попадаем в папку автозапуска при помощи Win+R, shell:startup
Кидаем туда ссылку на скрипт


Спасибо чату за подсказки, как все это можно сделать

5 лайков

Для чего нужен GIT?
Это как резервная копия на бесплатном облачном хранилище?

Для обсидиана в первом приближении - да, это как резервная копия. Хранилище может быть как с стороннего сервиса, так и собственное.

1 лайк

Да, многие именно так и используют. Можно как полноценный бэкап использовать. Я использую больше как историю изменений заметок. Если какую-то строчку текста случайно, к примеру, удалю, из гита достать её быстрее и проще, чем бекап обычный разворачивать

1 лайк

Внезапно гит оказался очень хорош для синхронизации ваулта на разных компах благодаря умному слиянию файлов.

Обычные средства синзронизации тупо плодят дубликаты конфликтующих файлов, что гораздо менее дружелюбно для пользователя.

3 лайка

Это система контроля версий, которая нужна для отслеживания изменений и откатов при случае
Синхронизация в гите, это скорее побочный плюс, чем основная цель (поэтому я рекомендую не использовать гит, если человеку нужна только синхронизация)