Backup / Mirror Github репозитории
Я хотел бы периодически создавать резервную копию моих репозиториев github. Есть ли быстрый способ вытащить их всех, не зная, что весь список?
Вальтер
4 ответа
Ответ, которого я ждал.
Я решил попробовать Руби, и это нормально. Мне нравится, как он компактен, но выглядит не очень:(.
Это работает:
#!/usr/bin/env ruby
require "yaml"
require "open-uri"
time = Time.new
backupDirectory = "/storage/backups/github.com/#{time.year}.#{time.month}.#{time.day}"
username = "walterjwhite"
#repositories =
# .map{|r| %Q[#{r[:name]}] }
#FileUtils.mkdir_p #{backupDirectory}
YAML.load(open("http://github.com/api/v2/yaml/repos/show/#{username}"))['repositories'].map{|repository|
puts "found repository: #{repository[:name]} ... downloading ..."
#exec
system "git clone git@github.com:#{username}/#{repository[:name]}.git #{backupDirectory}/#{repository[:name]}"
}
Вальтер
Теперь, когда API v2, используемый в принятом ответе, больше не работает, пришло время для обновления, которое использует Github API v3.
Вы можете получить список репозиториев в формате JSON с помощью
curl -i https://api.github.com/users/username/repos
Остерегайтесь нумерации страниц! По умолчанию результаты разбиты на 30 пунктов. Если у вас больше репозиториев, чем умещается на одной странице, вы получите Link
Заголовок ответа HTTP со ссылками на другие страницы (с rel=next/last/first/prev). Вы также можете запросить больший размер страницы (до 100):
curl -i https://api.github.com/users/username/repos?per_page=100
Полный скрипт резервного копирования (при условии, что у вас есть 100 или меньше репозиториев) будет выглядеть примерно так:
#!/usr/bin/python
import os
import json
import urllib
import subprocess
username = 'username' # specify your github username
os.chdir(os.expanduser('~/github')) # location for your backups, must exist
url = 'https://api.github.com/users/%s/repos?per_page=100' % username
for repo in json.load(urllib.urlopen(url)):
print "+", repo['full_name']
if os.path.exists(repo['name']):
subprocess.call(['git', 'pull'], cwd=repo['name'])
else:
subprocess.call(['git', 'clone', repo['git_url']])
Вы можете получить весь список через API GitHub:
curl http://github.com/api/v2/yaml/repos/show/walterjwhite
Например, это простая однострочная оболочка DOS/Unix:
ruby -ryaml -ropen-uri -e "puts YAML.load(open('http://github.com/api/v2/yaml/repos/show/walterjwhite'))['repositories'].map {|r| %Q[* **#{r[:name]}** (#{r[:description]}) is at <#{r[:url]}/>] }"
печать (при условии, что у вас установлен Ruby):
- logback (Надежная, универсальная, быстрая и гибкая среда ведения журналов для Java.) находится по адресу http://github.com/walterjwhite/logback/
- Test-Automation (предоставляет среду автоматизации тестирования пользовательского интерфейса) по адресу http://github.com/walterjwhite/Test-Automation/
- model.base (проект базовой модели) находится по адресу http://github.com/walterjwhite/model.base/
- project.configuration (Конфигурация проекта (Jalopy, Checkstyle и т. д.)) находится по адресу http://github.com/walterjwhite/project.configuration/
- model.http (Http Models / Enties) находится по адресу http://github.com/walterjwhite/model.http/
- model.address (адреса моделей и сущностей) находится по адресу http://github.com/walterjwhite/model.address/
- model.geolocation.base (геолокационные модели и объекты) находится по адресу http://github.com/walterjwhite/model.geolocation.base/
- model.user (пользовательские модели и сущности) находится по адресу http://github.com/walterjwhite/model.user/
- model.annotations.current (используется для вставки текущей даты / пользователя в сущность) по адресу http://github.com/walterjwhite/model.annotations.current/
- model.annotations.deidentify (используется для деидентификации полей PHI) находится по адресу http://github.com/walterjwhite/model.annotations.deidentify/
- model.annotations.verify (используется для проверки полей (адрес электронной почты, адрес, номер телефона и т. д.)) по адресу http://github.com/walterjwhite/model.annotations.verify/
- model.time (объекты времени) находится по адресу http://github.com/walterjwhite/model.time/
- model.http-security (сущности Http Security) находится по адресу http://github.com/walterjwhite/model.http-security/
- model.restriction.base (базовые модели ограничений) находится по адресу http://github.com/walterjwhite/model.restriction.base/
- model.restriction.time (ограничения по времени) находится по адресу http://github.com/walterjwhite/model.restriction.time/
- model.restriction.user (пользователь / группа / ограничения ролей) находится по адресу http://github.com/walterjwhite/model.restriction.user/
- model.web.base (базовая веб-модель) находится по адресу http://github.com/walterjwhite/model.web.base/
- model.web.resource (проект модели веб-ресурсов) находится по адресу http://github.com/walterjwhite/model.web.resource/
- model.web.file (файловая модель) находится по адресу http://github.com/walterjwhite/model.web.file/
- model.web.content (модели веб-контента) находится по адресу http://github.com/walterjwhite/model.web.content/
- model.deployment (Модели / сущности развертывания) находится по адресу http://github.com/walterjwhite/model.deployment/
- model.geolocation.tracking (отслеживание геолокации) находится по адресу http://github.com/walterjwhite/model.geolocation.tracking/
- model.geolocation.device-location (модели расположения устройств) находится по адресу http://github.com/walterjwhite/model.geolocation.device-location/
- model.defect (Дефект моделей / сущностей) находится по адресу http://github.com/walterjwhite/model.defect/
- model.test.error (тестовые ошибки) находится по адресу http://github.com/walterjwhite/model.test.error/
- model.web.automation.history (история тестов) находится по адресу http://github.com/walterjwhite/model.web.automation.history/
- model.html (Test Html) находится по адресу http://github.com/walterjwhite/model.html/
- model.test.user (Test Http) находится по адресу http://github.com/walterjwhite/model.test.user/
- model.web.automation.test (тестовые тестовые объекты) находится по адресу http://github.com/walterjwhite/model.web.automation.test/
- model.web.automation.validation (тестовые объекты проверки) находится по адресу http://github.com/walterjwhite/model.web.automation.validation/
- service.query.base (предоставляет платформу для автоматической вставки запросов из определения интерфейса + аннотации) по адресу http://github.com/walterjwhite/service.query.base/
- service.query.defect (предоставляет сервис запросов для запросов на наличие дефектов / исправлений) по адресу http://github.com/walterjwhite/service.query.defect/
- service.query.deployment (служба запросов развертывания) находится по адресу http://github.com/walterjwhite/service.query.deployment/
- model.restriction.geolocation (ограничения геолокации) находится по адресу http://github.com/walterjwhite/model.restriction.geolocation/
- service.query.address (адресный запрос servicd) находится по адресу http://github.com/walterjwhite/service.query.address/
- service.query.geolocation.device-location (Служба запроса местоположения устройства) находится по адресу http://github.com/walterjwhite/service.query.geolocation.device-location/
- service.query.geolocation.base (служба запросов геолокации) находится по адресу http://github.com/walterjwhite/service.query.geolocation.base/
- service.query.http (служба запросов Http) находится по адресу http://github.com/walterjwhite/service.query.http/
- service.query.http-security (служба запросов Http Security) находится по адресу http://github.com/walterjwhite/service.query.http-security/
- service.query.user (служба пользовательских запросов) находится по адресу http://github.com/walterjwhite/service.query.user/
- service.query.web.file (служба запросов к веб-файлам) находится по адресу http://github.com/walterjwhite/service.query.web.file/
- service.query.web.content (служба запросов веб-контента) находится по адресу http://github.com/walterjwhite/service.query.web.content/
- наблюдатель.startup.deployment (Наблюдатель событий запуска (развертывание)) находится по адресу http://github.com/walterjwhite/observer.startup.deployment/
- наблюдатель.startup.defect (Наблюдатель событий запуска (дефект)) находится по адресу http://github.com/walterjwhite/observer.startup.defect/
- listener.servlet.request (Запрос слушателя сервлета) находится по адресу http://github.com/walterjwhite/listener.servlet.request/
- util.network (Сетевые утилиты) находится по адресу http://github.com/walterjwhite/util.network/
- listener.servlet.geolocation (прослушиватель сервлетов геолокации) находится по адресу http://github.com/walterjwhite/listener.servlet.geolocation/
- listener.persistence.audit (Audit Persistence Listeners (Hibernate)) находится по адресу http://github.com/walterjwhite/listener.persistence.audit/
- listener.persistence.current (текущие (пользователь / дата) постоянные прослушиватели) по адресу http://github.com/walterjwhite/listener.persistence.current/
- listener.persistence.restriction (прослушиватель Restriction Persistence (обеспечивает защиту объектов при загрузке)) по адресу http://github.com/walterjwhite/listener.persistence.restriction/
- service.geolocation (служба обновления геолокации) находится по адресу http://github.com/walterjwhite/service.geolocation/
- service.notification (служба уведомлений) находится по адресу http://github.com/walterjwhite/service.notification/
- service.traffic-analysis (Служба анализа трафика) находится по адресу http://github.com/walterjwhite/service.traffic-analysis/
- servlet.file (Файловый сервлет) находится по адресу http://github.com/walterjwhite/servlet.file/
- util.web.file (File Utilities) находится по адресу http://github.com/walterjwhite/util.web.file/
- servlet.filter.base (базовые фильтры сервлетов) находится по адресу http://github.com/walterjwhite/servlet.filter.base/
- servlet.filter.web.content (фильтр сервлетов веб-контента) находится по адресу http://github.com/walterjwhite/servlet.filter.web.content/
- servlet.filter.security (фильтры сервлетов безопасности) по адресу http://github.com/walterjwhite/servlet.filter.security/
- io.file (Файловые функции (не рекомендуется)) находится по адресу http://github.com/walterjwhite/io.file/
- deprecated.listener.postInitialization.libraryLogger (Библиотека Logger (устарело)) находится по адресу http://github.com/walterjwhite/deprecated.listener.postInitialization.libraryLogger/
- deprecated.listener.startup.databaseImporter (импортер базы данных (позволяет запускать несколько сценариев import.sql при запуске сервера)) по адресу http://github.com/walterjwhite/deprecated.listener.startup.databaseImporter/
- deprecated.listener.startup.scheduler (Планировщик (позволяет планировать задания просто с помощью аннотаций)) по адресу http://github.com/walterjwhite/deprecated.listener.startup.scheduler/
- docbook (формат Docbook (предоставляет конфигурацию docbook для стандартного форматирования)) по адресу http://github.com/walterjwhite/docbook/
- deprecated.model.client (модели клиентов) по адресу http://github.com/walterjwhite/deprecated.model.client/
- deprecated.model.virtualhost (модели Virtualhost) находится по адресу http://github.com/walterjwhite/deprecated.model.virtualhost/
- util.web.resource (утилиты Web Resource (устарело, вместо прозрачной защиты сущностей используйте прослушиватели безопасности)) по адресу http://github.com/walterjwhite/util.web.resource/
- servlet.filter.notification (фильтр сервлетов уведомлений) находится по адресу http://github.com/walterjwhite/servlet.filter.notification/
- Spring-Core (базовый проект для весенних проектов (не рекомендуется)) находится по адресу http://github.com/walterjwhite/spring-core/
- view.content (компоненты JSF для проектов контента (предоставляет слой представления)) по адресу http://github.com/walterjwhite/view.content/
- document.server-setup (Документация для настройки сервера (попытка сделать повторяемый процесс и обеспечить меньше дефектов и потенциальных уязвимостей)) находится по адресу http://github.com/walterjwhite/documentation.server-setup/
- server.http (Http-сервер с использованием JBoss Netty) находится по адресу http://github.com/walterjwhite/server.http/
- listener.persistence.deidentify (слушатель постоянства деидентификации) находится по адресу http://github.com/walterjwhite/listener.persistence.deidentify/
- util.http (утилиты Http) находится по адресу http://github.com/walterjwhite/util.http/
- deprecated.service.translate (Служба переводов) находится по адресу http://github.com/walterjwhite/deprecated.service.translate/
- html5.example.danforys.mesmerizer (пример сетки HTML5) находится по адресу http://github.com/walterjwhite/html5.example.danforys.mesmerizer/
- html5.framework (фреймворк HTML5 (кэширование, рендеринг клиента и т. д.)) находится по адресу http://github.com/walterjwhite/html5.framework/
- document.os.open-solaris (Открытая документация Solaris) находится по адресу http://github.com/walterjwhite/documentation.os.open-solaris/
- document.development (Документация по разработке) находится по адресу http://github.com/walterjwhite/documentation.development/
- interceptor.exception (общий перехватчик исключений для CDI) находится по адресу http://github.com/walterjwhite/interceptor.exception/
- Наблюдатель.http-security (Http Security Observer (события аутентификации)) находится по адресу http://github.com/walterjwhite/observer.http-security/
- model.preference.base (проект модели базовых предпочтений) находится по адресу http://github.com/walterjwhite/model.preference.base/
- model.preference.notification (модели предпочтений уведомления) находится по адресу http://github.com/walterjwhite/model.preference.notification/
- deprecated.web.base (Устаревший проект (абстрактные веб-компоненты)) находится по адресу http://github.com/walterjwhite/deprecated.web.base/
- model.annotations.ui (аннотации для автоматической визуализации сущностей веб-действий) по адресу http://github.com/walterjwhite/model.annotations.ui/
- model.web.action.geolocation (модели веб-действий Geolocation) находится по адресу http://github.com/walterjwhite/model.web.action.geolocation/
- listener.servlet.web.traffic (прослушиватель сервлетов веб-трафика (захватывает веб-трафик)) по адресу http://github.com/walterjwhite/listener.servlet.web.traffic/
- model.web.traffic (модели веб-трафика (для захвата трафика HTML5, могут использоваться и для HTML4)) по адресу http://github.com/walterjwhite/model.web.traffic/
- iterator.sql (SQL Iterator (для итерации по сценариям SQL)) находится по адресу http://github.com/walterjwhite/iterator.sql/
- model.notification (модели уведомлений / сущности) находится по адресу http://github.com/walterjwhite/model.notification/
- model.fmea (модели FMEA (для захвата потенциального отказа и анализа эффектов)) находится по адресу http://github.com/walterjwhite/model.fmea/
- service.web.automation.operator (оператор для проекта веб-автоматизации (имитирует пользователя приложения)) находится по адресу http://github.com/walterjwhite/service.web.automation.operator/
- deprecated.iterator.web-Automation (итераторы веб-автоматизации (навигация по страницам)) по адресу http://github.com/walterjwhite/deprecated.iterator.web-automation/
- deprecated.OS.gentoo.install (Сценарии установки Gentoo (не рекомендуется)) находится по адресу http://github.com/walterjwhite/deprecated.OS.gentoo.install/
- web.action.base (модуль Base Web Action) находится по адресу http://github.com/walterjwhite/web.action.base/
- web.action.contact.email (предоставляет веб-действие для связи с веб-сайтом по электронной почте) по адресу http://github.com/walterjwhite/web.action.contact.email/
- web.action.geolocation (предоставляет веб-действие геолокации (введите IP-адрес, получите геолокацию)) по адресу http://github.com/walterjwhite/web.action.geolocation/
- web.action.search (действие поиска в Интернете (возможность поиска по всем объектам, если у пользователя есть разрешение)) по адресу http://github.com/walterjwhite/web.action.search/
- web.action.user (действия пользователя в Интернете (для управления пользователями)) по адресу http://github.com/walterjwhite/web.action.user/
- web.service.geolocation (веб-служба геолокации) находится по адресу http://github.com/walterjwhite/web.service.geolocation/
- service.query.web.resource (служба запросов веб-ресурсов) находится по адресу http://github.com/walterjwhite/service.query.web.resource/
- model.web.action.contact.email (электронная почта, поддерживающая действие "Контакт") по адресу http://github.com/walterjwhite/model.web.action.contact.email/
- interceptor.web (перехватывает веб-действия / методы обслуживания для целей аудита) по адресу http://github.com/walterjwhite/interceptor.web/
- prettyfaces.extension.sitemap (расширение карты сайта Prettyfaces (автоматически генерирует карту сайта и публикует ее в google, yahoo, msn и т. д.)) по адресу http://github.com/walterjwhite/prettyfaces.extension.sitemap/
- Prettyfaces-тесты (некоторые тестовые веб-приложения PrettyFaces) находятся по адресу http://github.com/walterjwhite/prettyfaces-tests/
- scheduler.quartz (менеджер планировщика заданий Quartz (инициализирует планировщик заданий кварца...)) по адресу http://github.com/walterjwhite/scheduler.quartz/
- наблюдатель.rFactor (наблюдатели событий rFactor (для управления сервером rFactor)) по адресу http://github.com/walterjwhite/observer.rFactor/
- Наблюдатель.event-planner (наблюдатели Планировщика событий) находится по адресу http://github.com/walterjwhite/observer.event-planner/
- web.action.news (новостные компоненты веб-действий) по адресу http://github.com/walterjwhite/web.action.news/
- web.action.rFactor (веб-действия rFactor (управление серверами rFactor, конфигурации, гонки и т. д.)) по адресу http://github.com/walterjwhite/web.action.rFactor/
- web.action.contact.chat (компоненты веб-действий чата) по адресу http://github.com/walterjwhite/web.action.contact.chat/
- service.automation.web.search.job (Служба веб-автоматизации поиска работы) находится по адресу http://github.com/walterjwhite/service.automation.web.search.job/
- deprecated.service.analytics (служба аналитики (устарела, вместо нее используйте реальный пакет отчетов)) по адресу http://github.com/walterjwhite/deprecated.service.analytics/
- service.backup (служба резервного копирования (резервное копирование базы данных, файлов журналов и т. д.)) находится по адресу http://github.com/walterjwhite/service.backup/
- model.web.action.bookmark (закладки моделей веб-действий) находится по адресу http://github.com/walterjwhite/model.web.action.bookmark/
- model.web.action.search (поисковые модели) находится по адресу http://github.com/walterjwhite/model.web.action.search/
- model.web.action.decision (модели принятия решений (для сбора решений и результатов, полезных для проектных решений и, конечно, бесконечных возможностей)) находится по адресу http://github.com/walterjwhite/model.web.action.decision/
- model.weather (модели погоды) находится по адресу http://github.com/walterjwhite/model.weather/
- model.recipe (рецепт модели) находится по адресу http://github.com/walterjwhite/model.recipe/
- model.web.action.search.job (модели действий веб-поиска работы) находится по адресу http://github.com/walterjwhite/model.web.action.search.job/
- model.web.action.task (модели действий веб-задач) по адресу http://github.com/walterjwhite/model.web.action.task/
- model.travel (Travel Models) находится по адресу http://github.com/walterjwhite/model.travel/
- model.events (модель событий) находится по адресу http://github.com/walterjwhite/model.events/
- model.lodging (модель жилья) находится по адресу http://github.com/walterjwhite/model.lodging/
- model.business.billing (Billing Business Models (для сбора платежной информации)) по адресу http://github.com/walterjwhite/model.business.billing/
- model.business.business (бизнес-модели (для сбора платежной информации)) по адресу http://github.com/walterjwhite/model.business.business/
- model.business.service (сервисные бизнес-модели (для получения предоставленных услуг)) по адресу http://github.com/walterjwhite/model.business.service/
- model.business.restaurant (Ресторанные бизнес-модели (для сбора платежной информации)) по адресу http://github.com/walterjwhite/model.business.restaurant/
- model.news (Новости моделей) находится по адресу http://github.com/walterjwhite/model.news/
- model.project (модели проектов (для отслеживания проектов, работы, задач и т. д.)) находится по адресу http://github.com/walterjwhite/model.project/
- model.meal (модели питания) находится по адресу http://github.com/walterjwhite/model.meal/
- model.gaming.rFactor (игровые модели rFactor) находится по адресу http://github.com/walterjwhite/model.gaming.rFactor/
- model.question-and-answer (модели вопросов и ответов) по адресу http://github.com/walterjwhite/model.question-and-answer/
- model.feedback (модели обратной связи) находится по адресу http://github.com/walterjwhite/model.feedback/
- linuxtag2010_javaEE6 (Пример учебного руководства по Java EE 6 на Linuxtag 2010.) находится по адресу http://github.com/walterjwhite/linuxtag2010_javaEE6/
- deprecated.navigation.web.automation (модуль автоматизации веб-навигации) находится по адресу http://github.com/walterjwhite/deprecated.navigation.web.automation/
- model.career (Карьера модели / лица) находится по адресу http://github.com/walterjwhite/model.career/
- model.clothing (Модели одежды / сущности) находится по адресу http://github.com/walterjwhite/model.clothing/
- deprecated.model.crawler (не рекомендуется, эти проекты будут разделены (только для справочных целей)) по адресу http://github.com/walterjwhite/deprecated.model.crawler/
- резюме (мое резюме) на http://github.com/walterjwhite/resume/
- Визитные карточки (Business Cards) находится по адресу http://github.com/walterjwhite/business-cards/
На GitHub Marketplace доступны некоторые сторонние приложения:
См. Дополнительную информацию в категории «Утилита резервного копирования» или просто выполните поиск некоторых опций на торговой площадке.