/bin/dev - IT Lounge

Полная версия: Бэкап всех своих репозиториев с GitHub
Вы просматриваете упрощённую версию нашего контента. Просмотр полной версии с полным форматированием.
Паранойя не дремлет, поэтому всегда лучше иметь бэкап всех своих проектов, чтобы в случае какого-либо казуса ничего не потерялось. А лучше два бэкапа....

В качестве одного у меня есть свой сервер Gitea, на котором хранятся разные проекты или просто скрипты и заметки, он же выкачивает с GitHub в режиме зеркала те проекты, которые изначально хостятся там.

В качестве второго бэкапа рулят обычные архивы с данными где-нибудь на полочке. 

Для этого можно овспользоваться простым скриптом, который по API дернет список всех реп, а потом просто клонирует их в каталог.

Я его подцепил на каком-то форуме, и с тех пор довольно часто пользуюсь.

Создаем каталог, куда будем клонировать, и переходим в него:

Код:
mkdir my_projects
cd my_projects

А теперь запускаем скрипт:

Код:
curl -s "https://api.github.com/users//repos?per_page=100&page=1" | jq -r '.[] | select(.name ) | select(.fork == false).ssh_url' | xargs -L1 git clone --mirror

Единственный нюанс — он не сможет выкачать боле 100 реп, но я редко у кого столько видел.

Обновить репы можно так:

Код:
find . -maxdepth 1 -type d -exec sh -c '(cd {} && echo ">>> Pull repo \"$(basename "$(pwd)")\"" && git pull --all | grep -v "Fetching origin" | grep -v "Already up to date")' ';'

Можно добавить всю эту магию в crontab на домашнем сервере, чтобы, скажем, раз в сути в 12 ночи он делал бэкап. Можно добавить немного улучшайзеров: упаковывать в архивы по дате и так далее.
Разве не нужно делать git clone --mirror?
Хорошее замечание, кстати, да. Он же так только мейнстрим сливает щас.

С одной стороны — да и пофиг? Все равно рано или поздно все ветки сливаются в мастера, так что даже если раз в сутки ты что-то потеряешь — пофиг. С другой, наверное, лучше делать полную копию репы со всем содержимым вообще.



Фиксану щас скрипт Smile
GitLab тоже может выкачивать с GitHub в режиме зеркала проекты.

даже свой сервер иметь необязательно.
(12.02.2023 08:Feb)Clockwork Написал: [ -> ]GitLab

Ну ты сравнил. Скрипт на баше и монстра, которому подавай 4 гига, 4 ядра и вот это вот все.
Вот бы так иметь в бэкапе все сорцы, которыми пользуешься.

А то качать с Github-а репозитории у меня не вышло, Gitea жалуется на ошибки и не получается зеркала сделать.

Может, Gentooшные тарболлы зеркалить? Сколько они весят?

Или, вот слышал, у Red Hat вместе с диском с бинарниками раньше поставлялись и диски с исходным кодом.
(13.03.2023 16:Mar)byashacat Написал: [ -> ]Или, вот слышал, у Red Hat вместе с диском с бинарниками раньше поставлялись и диски с исходным кодом.
Раньше в установочный образ любой BSD включались порты, а порты раньше включали в себя в том числе исходный код.

(13.03.2023 16:Mar)byashacat Написал: [ -> ]Может, Gentooшные тарболлы зеркалить? Сколько они весят?
Тарболлы там в основном качаются с зеркал, но на этих зеркалах они ничем не отличаются от апстрима. Все исходники всех доступных пакетов весят… много. Очень много.
(13.03.2023 16:Mar)byashacat Написал: [ -> ]Вот бы так иметь в бэкапе все сорцы, которыми пользуешься.

Имей, кто тебе мешает? Smile Или ты про вообще все пакеты в ОС?



(13.03.2023 16:Mar)byashacat Написал: [ -> ]Gitea жалуется на ошибки и не получается зеркала сделать

Какие? Там, возможно, надо просто ключ добавить ей. У меня без проблем все мои гитхабо-репы собираются.



(13.03.2023 16:Mar)byashacat Написал: [ -> ]Может, Gentooшные тарболлы зеркалить? Сколько они весят?

А там разве из одного места тянутся все исходники?



(13.03.2023 19:Mar)mord0d Написал: [ -> ]Все исходники всех доступных пакетов весят… много. Очень много.

Дохрена, я бы даже сказал Smile
(14.03.2023 10:Mar)Zhbert Написал: [ -> ]
Цитата:Может, Gentooшные тарболлы зеркалить? Сколько они весят?
А там разве из одного места тянутся все исходники?
По умолчанию вроде с выбранного зеркала с фоллбэком на апстрим.
(14.03.2023 17:Mar)mord0d Написал: [ -> ]По умолчанию вроде с выбранного зеркала с фоллбэком на апстрим

Значит я чет попутал. Был уверен, что иногда оно тянет сорцы прямо с гитхаба или сорсфоржа.
(15.03.2023 07:Mar)Zhbert Написал: [ -> ]Значит я чет попутал. Был уверен, что иногда оно тянет сорцы прямо с гитхаба или сорсфоржа.
Если это явно указано в ебилде. Лайвы, например, потому что оно из HEAD/trunk тянет, снапшоты которых, очевидно, на зеркала никто не сливает.
Цитата: Какие? Там, возможно, надо просто ключ добавить ей. У меня без проблем все мои гитхабо-репы собираются.
deadline context exceeded и все в таком духе, увеличивал таймауты - без толку

Цитата: А там разве из одного места тянутся все исходники?
В 2021 году ставил - да, из одного места. Из ж......

Цитата: Имей, кто тебе мешает? Smile Или ты про вообще все пакеты в ОС?
Все, что установлено в ОС с зависимостями + сервисы, что развернул в докере. Хочу иметь копии на случай непредвиденных ситуаций (отключение интернета, пришествие инопланетян).
(16.03.2023 16:Mar)byashacat Написал: [ -> ]Все, что установлено в ОС с зависимостями + сервисы, что развернул в докере. Хочу иметь копии на случай непредвиденных ситуаций (отключение интернета, пришествие инопланетян).
В этом случае ничего обновляться у тебя не будет, а значит и пересобирать уже работающее не имеет смысла. В чём практическое применение твоей хотелки — не вполне ясно.
Угу, выглядит так, как будто достаточно просто образ системы снять.
Тем более, что раскатать его можно на любое железо без проблем (линуксы точно, насчет фряхи вашей хз).

Ну а вообще решить эту проблему можно с помощью Harbor или ему подобных — он тебе и докер закеширует, и пакеты дистра, и нпм и вообще все...
(20.03.2023 07:Mar)Zhbert Написал: [ -> ]Тем более, что раскатать его можно на любое железо без проблем (линуксы точно, насчет фряхи вашей хз).
FreeBSD ставится точно так же, как Gentoo: разметил диск, распаковал базовую систему, бутстрапнул MBR и/или скопировал efi-файл на ESP. И переносится точно так же, как и почти любой UNIX-like (только BSD cp хардлинки дереференсит, потому лучше использовать tar). С ZFS перенос можно осуществить средствами самой ZFS, с UFS можно использовать dump/restore (это получится дольше чем банальный tar), дальше как обычно бутстрапаешь загрузчик и готово.

(20.03.2023 07:Mar)Zhbert Написал: [ -> ]с помощью Harbor
Если уже установленные пакеты, то достаточно просто не сносить кэш pkg (у меня на десктопе уже 33G кэша, пару раз даже пригодилось) или хотя бы копировать нужные версии куда-нибудь.
Разве Gitea не умеет с коробки в бекап репозиториев?
(23.03.2023 10:Mar)doesnm Написал: [ -> ]Разве Gitea не умеет с коробки в бекап репозиториев?

Чукча не читатель?