Зарубежные сервисы прекращают работу в Россиис 12 сентября 2024 года cанкции США предписывают иностранным компаниям не предоставлять услуги в сфере ИТ и облачных сервисов в России. Notion, Miro, ClickUp, Coda, Wix — это только часть компаний, которые за последние недели объявили об уходе из России.
Привет, парни! Думаю имеет смысл на всякий случай сделать резервную копию важных данных. Какие данные важны и наиболее уязвимы в данном контексте? Как минимум базы данных проектов, расположенные на зарубежных серверах, а так же исходный проектов, хранящийся на GitHub и подобных зарубежных сервисах.
Базы данныхЛично у меня есть базы данных в Digital Ocean и AWS, поэтому настроил для них потоковую репликацию напрямую в Yandex.Cloud. То есть все изменения данных в основной базе автоматически синхронизируются с репликой (базой в яндексе) в реальном времени. Сделал это уже давно.
Таким образом, если DO или AWS заблокируют аккаунт, то у меня будет максимально свежая копия данных. Репликация настраивается НЕ очень просто и быстро, особенно если делать это первый раз, поэтому вместо неё (как минимум) можно настроить простое резервное копирование через периодический бэкап данных. Например раз в час делать дамп и отправлять его
куда подальше в отдельное хранилище. Вообще это в любом случае должно быть всегда и везде, тк потеря данных это жопа.
Исходный кодЧто касается исходного кода проектов, то не будет лишним скачать всё себе на комп или внешний жесткий диск - на всякий случай, чтобы спать спокойно. У меня 70+ репозиториев на GitHub и НЕ все они слишком важны, но сейчас не особо хочется разбираться с каждым, поэтому решил просто скачать их все.
Скачивать каждый репозиторий вручную не охота, причем лучше именно
клонировать репозитории со всеми ветками, поэтому автоматизируем эту историю.
У меня Apple MacBook, поэтому инструкция для MacOS.
1. Устанавливаем консольный клиент GitHub CLI:
# mac os
brew install gh
2. Аутентифицируемся в GitHub CLI:
gh auth login
3. Так же понадобится утилита для работы с данными формате JSON:
brew install jq
4. Создаём папку для скачивания репозиториев:
mkdir github && cd github
5. Создаём файл для bash-скрипта:
touch download.sh
6. Вставляем в него следующий код:
#!/bin/bash
# Получаем список всех репозиториев пользователя
repos=$(gh repo list --limit 1000 --json nameWithOwner --jq '.[]')
# Клонируем каждый репозиторий
for repo in $(echo "$repos" | jq -r '.nameWithOwner'); do
gh repo clone "$repo"
done
echo "Все репозитории скачаны!"
7. Запускаем и ждём завершения скачивания:
bash ./download.sh
Короче суть ясна, код скрипта простой, хотя в моей версии было еще отображение размеров каждого репозиторя и их общего размера + подтверждение скачивания. Само собой скрипт мне написал ИИ, поэтому если что все вопросы можете задавать ему
😁 По факту написание этого поста вышло дольше, чем вся эта автоматизация.
Ладно, дело сделано, можно вернуться к работе. Надеюсь полезно, пишите комменты.
На связи
⚡️@onecode_blog