Появилась возможность превратить ваш GitHub аккаунт в Безлимитное Облачное Хранилище Данных. И это вовсе не миф.

Согласно с информацией, данной GitHub, каждый пользователь может создать бесконечное количество публичных и приватных репозиториев. Мы можем загружать до 1000 Мб в один репозиторий и каждый из файлов не должен превышать размера в 100 Мб. Тут попахивает возможностью создать бесплатное и безлимитное облачное хранилище, не так ли?

Я осознаю что на сегодняшний день уже существует множество вариантов хранения данных в облаке и такие лидирующие компании, как Dropbox, Google Drive или даже Amazon S3 предоставляют свои услуги по очень низким ценам, не уступая при этом и качеством. Но решение, основанное на GitHub CDN может быть крайне полезно если вам нужно максимально быстро и просто загрузить файлы в облако, и в то же время не беспокоится о надежности и доступности ваших валов в любое время. Даже через десятки лет.

Как загрузить любой файл в репозиторий GitHub?


Вы можете спросить, «В чем проблема, Карл? Почему я просто не могу сделать git pull, git push?» Спасибо за вопрос. И ответ мой максимально прост: Я не хочу использовать git pull каждый раз, когда я хочу загрузить новый файл. Я хочу чтобы все было максимально просто. В один клик.

И никакой проблемы не было, если бы эта чудесная кнопка имела соответствующий API. Но, к сожалению его нет.

image

Но я нашел несколько вариантов чтобы «сделать» это. И вот наипростейший из них.

Загрузка файла в GitHub


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

Подробнее:

В первую очередь, создайте новый репозиторий с файлом лицензии (или каким нибудь другим) и ветке master. Вы можете это сделать с одним POST запросом используя GitHub API:

axios.post(`https://api.github.com/user/repos?access_token=${token}`, {
    name: `block1`,
    description: `Block 1`,
    homepage: "https://morejust.store/",
    private: false,
    has_issues: false,
    has_projects: false,
    has_wiki: false,
    license_template: "unlicense"
  });

Далее, создавайте новую ветку для загрузки каждого нового файла. Так-же, не забудьте что имя ветки не должно совпадать с уже существующими, поэтому рекомендую добавлять Unix timestamp к имени ветки.

И наконец-то, мы можем пушнуть (push) нашу ветку в GitHub:

git push --set-upstream origin $BRANCHNAME

После, вы еще можете удалить все локальные ветки чтобы не занимать лишнее дисковое пространство:

git checkout master
git branch -D $BRANCHNAME

Был реализован bash-скрипт который все это делает за вас, ссылка тут.

Как я могу создать свое безлимитное хранилище?


Ах да! Для этого был создан сервис Morejust.store — приложение, которое может создать бесплатное безлимитное хранилище для вас. По ссылке будет и проект на GitHub для наглядности процесса.
Парни, какой же кайф пользоваться своим-же сервисом. Вот реально удобно. Пишу статью на Хабр, нужно вставить картинку, а он принимает только картинки со ссылками. 2 секунды, картинка уже в облаке и я вставляю ссылку на хабр. Ну не сказка ли?
— Автор, на момент написания статьи.
P.S. Мы не злоупотребляем никакими возможностями сервиса GitHub и никаких взломов / обходов мы не делали. Все «заводские» лимиты и условия GitHub соблюдены, мы лишь сделали удобно там, где ранее это было неудобно.

Спасибо.

Комментарии (21)


  1. axifive
    12.01.2019 21:09
    +1

    Вот уж файлы до 100 мб сейчас загрузить можно на огромное колличество сервисов. На mega.nz предоставляемы бесплатно объем до 50гб без столь маленького лимита на файл, есть синхронизация и шифрование, а при превышении общего объема можно же и новый аккаунт зарегистрировать (что бы не нарущать правила можно зарегистрировать на родственников).


    1. MrFrizzy
      12.01.2019 22:21

      Сейчас вроде дают 15 Гб базовой квоты, а до 50 можно добить бонусами и только на ограниченный период времени


  1. sshikov
    12.01.2019 21:24
    +1

    Идея применить github в качестве хранилища понятна, а вот реализация какая-то или недодуманная, или как минимум не описана как следует. Что если у
    вас хранилище синхронизируется более чем с одной рабочей машиной?

    >Я не хочу использовать git pull каждый раз, когда я хочу загрузить новый файл.
    Не хотеть вы конечно имеете право, но если вы не делаете pull каждый раз, ваши файлы на локальной машине не синхронизированы с репозиторием. Обычно это не то поведение, какого ожидаешь от облачного хранилища общего назначения, которое вроде бы обещает заголовок.

    >доступности ваших валов в любое время
    Поправьте опечатку при случае.


  1. SirEdvin
    12.01.2019 21:37
    +23

    Мы не злоупотребляем никакими возможностями сервиса GitHub и никаких взломов / обходов мы не делали. Все «заводские» лимиты и условия GitHub соблюдены, мы лишь сделали удобно там, где ранее это было неудобно.

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


  1. orion76
    12.01.2019 21:44
    +5

    Я сам люблю халяву.
    Все любят халяву, даже те кто не признается в этом даже себе.

    Но это перебор-))


  1. axifive
    12.01.2019 21:53
    +9

    Пишу статью на Хабр, нужно вставить картинку, а он принимает только картинки со ссылками. 2 секунды, картинка уже в облаке и я вставляю ссылку на хабр. Ну не сказка ли?

    Специально для этого есть Habrastorage, в справке под полем текста это было. Как я вижу сейчас картинка на него и загружена.


    1. dartraiden
      12.01.2019 23:18
      +2

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


      1. axifive
        12.01.2019 23:35

        Я так и подумал. Хотел указал на бессмысленность загрузки на сторонние ресурсы, если все равно будет перенос.


    1. kirillovmr Автор
      13.01.2019 08:01

      Хабр настоял на хостинге картинок у них :/


  1. dmitry_dvm
    12.01.2019 22:24
    +8

    А потом удивляемся, что сервисы гайки закручивают.


  1. MrFrizzy
    12.01.2019 22:27

    Попадалась как-то на глаза утилита бэкапа файлов в gmail ящик — там вроде 15гб квота есть xD
    Тоже, по-сути, идея для стартапа™ — создаем аккаунты, подключаем скрипты — вуаля…
    Вообще чудес не бывает, и в лучшем случае есть риск потерять свои данные. Проще уже поскрести по базовым квотам в 5-15гб разного рода дропбоксов и его аналогов — там хотя бы гарантии и sla какие-то есть.
    Хотя всякие s3 и backblaze могут быть дешевле, если сравнить со временем на поиск и эксплуатацию такого рода лазеек, а так же раскидыванию файлов по разным местам на случай, если очередную прикроют вместе со всей информацией


    1. kAIST
      12.01.2019 22:31

      Gmail использует квоты из google drive, так что проще напрямую уж.


      1. MrFrizzy
        12.01.2019 22:36
        -2

        У драйва вроде есть полиси против зашифрованных файлов, а в гмэил вроде бы нет никаких правил на тему хранения черновиков и типа их вложений)
        Но вообще фигня все это, конечно


        1. EminH
          13.01.2019 00:00
          -1

          на gmail тоже что-то есть, вы не пробовали посылать запароленный зип? у меня получается только если расширение менять на .ABCzip


  1. maximw
    13.01.2019 00:26
    +2

    Код помотрел, но не нашел нужных мест, так что сужу по опианию в статье.
    Вы храните все версии загруженного файла, даже без дедупликации. А как вы учитываете вообще удаление файла из хранилища?
    Размер репозитория будет только расти. Это не просто вредная поделка, это просто зло в квадрате.


  1. PastorGL
    13.01.2019 00:35
    +1

    Прямое нарушение GitHub TOS, пункт C.3:

    > use our servers for any form of excessive automated bulk activity (for example, spamming), or relay any other form of unsolicited advertising or solicitation through our servers, such as get-rich-quick schemes;

    Молодцы вообще ребята. К успеху идёте.


    1. gecube
      13.01.2019 00:50

      Так это не реклама, и не эбьюзинг, и не релей… Так что нарушение ToS (скорее всего), но в другом пункте


      1. PastorGL
        13.01.2019 02:48
        +1

        да такая «деятельность» сразу под много пунктов подпадает, этот только для примера («майкрософт заплатит за вас» — это get-rich-quick scheme, да и automated bulk activity налицо).

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


  1. keydon2
    13.01.2019 02:40
    -4

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


  1. Barnaby
    13.01.2019 04:48
    -2

    Появилась возможность превратить ваш GitHub аккаунт в Безлимитное Облачное Хранилище Данных.

    И появилась она до MS. Если речь о приватных репо — шифрование никто не отменял.


    Мы можем загружать до 1000 Мб в один репозиторий и каждый из файлов не должен превышать размера в 100 Мб.

    К релизам можно аттачить файлы больше 100 Мб. И у меня есть стойкое подозрение что они не идут в лимит. Теперь ты знаешь что делать ;)


  1. kelevra
    13.01.2019 08:46
    -3

    Порекламирую снова корпорацию «добра»:

    Business
    Enhanced office suite with unlimited storage and archiving
    $10
    USD / user / month

    Если компания использует G Suite Business, то там и так безлимитное хранилище. Если уж выбирать из двух зол, то, полагаю, гугл это, всё таки, меньшее зло.