Согласно с информацией, данной GitHub, каждый пользователь может создать бесконечное количество публичных и приватных репозиториев. Мы можем загружать до 1000 Мб в один репозиторий и каждый из файлов не должен превышать размера в 100 Мб. Тут попахивает возможностью создать бесплатное и безлимитное облачное хранилище, не так ли?
Я осознаю что на сегодняшний день уже существует множество вариантов хранения данных в облаке и такие лидирующие компании, как Dropbox, Google Drive или даже Amazon S3 предоставляют свои услуги по очень низким ценам, не уступая при этом и качеством. Но решение, основанное на GitHub CDN может быть крайне полезно если вам нужно максимально быстро и просто загрузить файлы в облако, и в то же время не беспокоится о надежности и доступности ваших валов в любое время. Даже через десятки лет.
Как загрузить любой файл в репозиторий GitHub?
Вы можете спросить, «В чем проблема, Карл? Почему я просто не могу сделать git pull, git push?» Спасибо за вопрос. И ответ мой максимально прост: Я не хочу использовать git pull каждый раз, когда я хочу загрузить новый файл. Я хочу чтобы все было максимально просто. В один клик.
И никакой проблемы не было, если бы эта чудесная кнопка имела соответствующий API. Но, к сожалению его нет.
Но я нашел несколько вариантов чтобы «сделать» это. И вот наипростейший из них.
Загрузка файла в 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)
sshikov
12.01.2019 21:24+1Идея применить github в качестве хранилища понятна, а вот реализация какая-то или недодуманная, или как минимум не описана как следует. Что если у
вас хранилище синхронизируется более чем с одной рабочей машиной?
>Я не хочу использовать git pull каждый раз, когда я хочу загрузить новый файл.
Не хотеть вы конечно имеете право, но если вы не делаете pull каждый раз, ваши файлы на локальной машине не синхронизированы с репозиторием. Обычно это не то поведение, какого ожидаешь от облачного хранилища общего назначения, которое вроде бы обещает заголовок.
>доступности ваших валов в любое время
Поправьте опечатку при случае.
SirEdvin
12.01.2019 21:37+23Мы не злоупотребляем никакими возможностями сервиса GitHub и никаких взломов / обходов мы не делали. Все «заводские» лимиты и условия GitHub соблюдены, мы лишь сделали удобно там, где ранее это было неудобно.
Но вот по факту, это таки злоупотребление. Вы используете сервис для тех целей, для которых он не был предназначен. И если вдруг ваш сервис обретет популярность, то Github будет вынужден подкручивать лимиты и мы все скажем вам спасибо.
orion76
12.01.2019 21:44+5Я сам люблю халяву.
Все любят халяву, даже те кто не признается в этом даже себе.
Но это перебор-))
axifive
12.01.2019 21:53+9Пишу статью на Хабр, нужно вставить картинку, а он принимает только картинки со ссылками. 2 секунды, картинка уже в облаке и я вставляю ссылку на хабр. Ну не сказка ли?
Специально для этого есть Habrastorage, в справке под полем текста это было. Как я вижу сейчас картинка на него и загружена.dartraiden
12.01.2019 23:18+2Насколько помню, движок автоматически перезаливает изображения со сторонних хостингов через какое-то время после публикации.
axifive
12.01.2019 23:35Я так и подумал. Хотел указал на бессмысленность загрузки на сторонние ресурсы, если все равно будет перенос.
MrFrizzy
12.01.2019 22:27Попадалась как-то на глаза утилита бэкапа файлов в gmail ящик — там вроде 15гб квота есть xD
Тоже, по-сути, идея для стартапа™ — создаем аккаунты, подключаем скрипты — вуаля…
Вообще чудес не бывает, и в лучшем случае есть риск потерять свои данные. Проще уже поскрести по базовым квотам в 5-15гб разного рода дропбоксов и его аналогов — там хотя бы гарантии и sla какие-то есть.
Хотя всякие s3 и backblaze могут быть дешевле, если сравнить со временем на поиск и эксплуатацию такого рода лазеек, а так же раскидыванию файлов по разным местам на случай, если очередную прикроют вместе со всей информациейkAIST
12.01.2019 22:31Gmail использует квоты из google drive, так что проще напрямую уж.
MrFrizzy
12.01.2019 22:36-2У драйва вроде есть полиси против зашифрованных файлов, а в гмэил вроде бы нет никаких правил на тему хранения черновиков и типа их вложений)
Но вообще фигня все это, конечноEminH
13.01.2019 00:00-1на gmail тоже что-то есть, вы не пробовали посылать запароленный зип? у меня получается только если расширение менять на .ABCzip
maximw
13.01.2019 00:26+2Код помотрел, но не нашел нужных мест, так что сужу по опианию в статье.
Вы храните все версии загруженного файла, даже без дедупликации. А как вы учитываете вообще удаление файла из хранилища?
Размер репозитория будет только расти. Это не просто вредная поделка, это просто зло в квадрате.
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;
Молодцы вообще ребята. К успеху идёте.gecube
13.01.2019 00:50Так это не реклама, и не эбьюзинг, и не релей… Так что нарушение ToS (скорее всего), но в другом пункте
PastorGL
13.01.2019 02:48+1да такая «деятельность» сразу под много пунктов подпадает, этот только для примера («майкрософт заплатит за вас» — это get-rich-quick scheme, да и automated bulk activity налицо).
исходный репозиторий уже заблокировали, посмотрим долго ли продержатся форки.
keydon2
13.01.2019 02:40-4Извини мелкософт, но я не для того уходил от тебя, чтобы отдавать свои бекапы.
Только домашний сервер с впн, пускай и не бесплатно.
Barnaby
13.01.2019 04:48-2Появилась возможность превратить ваш GitHub аккаунт в Безлимитное Облачное Хранилище Данных.
И появилась она до MS. Если речь о приватных репо — шифрование никто не отменял.
Мы можем загружать до 1000 Мб в один репозиторий и каждый из файлов не должен превышать размера в 100 Мб.
К релизам можно аттачить файлы больше 100 Мб. И у меня есть стойкое подозрение что они не идут в лимит. Теперь ты знаешь что делать ;)
kelevra
13.01.2019 08:46-3Порекламирую снова корпорацию «добра»:
Business
Enhanced office suite with unlimited storage and archiving
$10
USD / user / month
Если компания использует G Suite Business, то там и так безлимитное хранилище. Если уж выбирать из двух зол, то, полагаю, гугл это, всё таки, меньшее зло.
axifive
Вот уж файлы до 100 мб сейчас загрузить можно на огромное колличество сервисов. На mega.nz предоставляемы бесплатно объем до 50гб без столь маленького лимита на файл, есть синхронизация и шифрование, а при превышении общего объема можно же и новый аккаунт зарегистрировать (что бы не нарущать правила можно зарегистрировать на родственников).
MrFrizzy
Сейчас вроде дают 15 Гб базовой квоты, а до 50 можно добить бонусами и только на ограниченный период времени