Skip to content

Latest commit

 

History

History
executable file
·
47 lines (26 loc) · 6.76 KB

README.md

File metadata and controls

executable file
·
47 lines (26 loc) · 6.76 KB
шеф готовит утилиты

320kg scripts 💀

Скрипты

huix

Маленькие скрипты берут на себя рутину: помогают управлять рабочим столом и файлами, а ещё присматривают за домашним сервером. Запускаются из приложений, по сочетаниям клавиш или системными службами

Чтобы отправить изменения huix, запусти syssync; можно передать своё сообщение коммита. Автоматическая синхронизация при входе в систему сама коммиты и отправку не делает

Синхронизация забирает и работу Мии: у huix и у проектов, которые она держит у себя на станции, появляется remote mya, и о её новых коммитах приходит уведомление. syssync идёт дальше: сначала коммитит всё, что Мия оставила в своём клоне huix, под её именем [mya], а потом вливает это в huix и отправляет вместе с твоими изменениями. Что именно пришло от неё, сообщит отдельное уведомление. Если вливать её работу не нужно, есть syssync --no-take

У команды есть полезный режим, если нужно синхронизировать только этот репозиторий:

syssync --no-projects

У отдельных скриптов есть своя справка — --help подскажет команды и параметры

Архивы на Google Drive

drive-backup сохраняет незашифрованный холодный архив директории, файл SHA-256 и отметку завершения. Команда сравнивает размер и SHA-256 с данными Drive, а прежний архив удаляет только после проверки нового. Обратное скачивание не требуется. Справка доступна через drive-backup --help; без установки команду можно запустить через nix run .#drive-backup -- --help

Файл .backupignore в корне исходной директории задаёт исключения в формате Git ignore, включая отрицания и привязку к корню. Правила действуют до упаковки; вложенные .backupignore, .gitignore и .ignore автоматически не применяются. Предпросмотр --dry-run показывает состав архива без упаковки или обращения к Drive, но не показывает предыдущий архив: для этого пришлось бы обратиться к Drive. Без .backupignore команда предупреждает об отсутствии исключений, но не ищет секреты по содержимому

Архив сохраняет права, пустые каталоги и символические ссылки, но не читает цели ссылок. Изменение исходных данных во время упаковки прерывает загрузку. Для баз данных сначала нужен согласованный дамп, а не архив живого каталога

При повторном запуске для той же пары "исходная директория → назначение" остаётся один завершённый архив. Другие наборы и посторонние файлы команда не удаляет. Одновременные запуски на одной машине блокируются; общий облачный каталог не следует обновлять одновременно с разных машин

Авторизацию через собственный Google OAuth-клиент выполняют явно под тем пользователем, который будет запускать команду: drive-backup auth. Клиент хранится в sops, а обновляемый токен — в закрытом изменяемом конфиге rclone, вне Git и Nix store. Для переключения между аккаунтами удобно создать отдельные подключения через --remote ИМЯ auth и выбирать их с тем же --remote перед archive. Если повторная авторизация не удалась, прежний токен сохраняется. Для работы без еженедельной повторной авторизации OAuth-приложение не должно оставаться в режиме "Testing"

Токен станции независим от пользовательского. Войди на станцию по SSH и выполни sudo drive-backup --config /var/lib/restic-cloud/rclone.conf auth, выбрав тот аккаунт, который должен хранить автоматическую копию. Ответь rclone, что на станции нет браузера: он покажет команду для машины с браузером и попросит вставить результат в SSH-терминал. Команда и результат содержат секретные данные, поэтому не публикуй их. Затем запусти sudo systemctl start restic-cloud.service и проверь журнал; новый аккаунт получит собственную папку, а прежний не изменится. Возраст последней копии проверяется для выбранного аккаунта и назначения

Удаление на Drive использует обычное поведение rclone: старые объекты попадают в корзину Google Drive. Они могут занимать квоту до очистки корзины

Если хочется проверить скрипты вручную, тесты запускаются так:

nix develop -c bash scripts/tests/run.sh