Интересно посмотреть на чужую реализацию, сам делал такую скриптину на дамп в S3. О шифровании и сжатия не подумал, + юзать os. для вызова команды не догадался и ставил фабрику. Еще из различий, выносил в .env ключи и прочие переменные, чтобы было удобно ставить на любой сервак и просто загружать в крон. В очередной раз лайк за видос, максимум информации простым языком и без воды.
Супер, спасибо! Алексей, сделай, пожалуйста, видео о том, как организовать проект на сервере. Не могу понять как лучше это сделать для автоматизации, а именно: - что должно быть в докер-контейнере, а что туда не надо класть? - где должен быть, например, Nginx? Его настраивать в том же контейнере? Или один раз настроить на сервере? А зачем тогда есть официальный контейнер? - по статике жду видео :) - как "располагать" сервер БД - и т.д. В моем понимании сейчас схема выглядит так: - купили сервер, настроили доступ, Nginx, DB - пулл реквест в VCS - CI инструменты прогоняют тесты, в случае успеха собирают контейнер, отправляют его в докерхаб - из докерхаба он вытаскивается на сервер - на сервере старый останавливается, новый запускается - если 200, старый удаляется Очень хотелось бы узнать твой опыт и рассуждения на эту тему
Понравился формат изложения: прошлись по каждой функции, описали когда она вызывается и что делает! Супер! P.S. Было бы здорово, если бы выпускали больше видео для начинающих) Спасибо!
При декомпрессии бэкапа перед заливкой его в БД PG не стоит сверить контрольные суммы или еще чего что бы исключить возможность ошибок при архивации и распаковки?
У меня возник вопрос: почему connection не закрываем? Мне все время толдычили что нужно закрывать все ресурсы, которые используются в скрипте... В сурсе я увидел with statement, но это только один раз :( Почему не создать функцию, которая вернёт объект connection, а в других функциях не использовать его в качестве аргумента... А уже в конце этот connection закрыть... Или нету смысла париться на счёт закрытие ресурса?
Спасибо за видео, как раз периодический делаю дамп базы данных, теперь еще и хранилище подключу. Подскажите, где правильней хранить дамп с БД приложении Джанго на сервере? в папке Media?
Папка media может быть открыта через веб (иногда открыта), тогда базу сможет скачать любой делающий. Лучше класть в директорию, точно закрытую от веб, в любое место. Я использую /tmp как временное хранилище перед выгрузкой в облако
Все прекрасно, но меня мучает вопрос, почему на 16:52 не "Database decrypted", впрочем это уж точно мелочи. p.s. Можно было бы вставить ещё пару слов про использование сайтовский exit в скриптах вместо "правильного" sys.exit. Зная любовь автора канала к чистому и красивому коду, это выглядит немного странно.
Алексей, спасибо за Ваши видео. Очень познавательно. Если будет возможность, запишите, пожалуйста, видео, как делать подобные python скрипты "user friendly", чтобы люди, которые ничего не знают о командной строке могли бы их как-то запускать.
Я думаю, что такие штуки - для программеров или админов, они должны уметь запускать их в командной строке. А программы для обычных людей на питоне можно собирать в готовые исполнимые пакеты (exe для Windows, например), хотя там всё равно есть много нюансов с зависимостями, их надо хорошо тестировать в разных версиях операционной системы
@@t0digital Нет. Я просто общий случай рассматриваю. Прикидываю стоит в это ввязываться или нет, если такое заказчик попросит. В основном программы пишу для веба.
Народ, привет! Важная заметка: Если у Вас итоговый бекап больше 1.9 Гб - не используйте openssl Если зашифровать, с флагом -stream, ещё реально - то вот расшифровка таких файлов становится невозможной средствами openssl --decrypt Поскольку в сурс коде есть зашитый лимит на выделение памяти через маллок, куда будет выгружаться архив Смотрите в стороны gpg и его потокового шифрования
Все круто, можно расширить тему по удаленному поднятию db PostgreSQL из скрипта python с одного сервера на другом. Дней 15 бился над этой проблемой и бросил не решив ее. Не проходит из-за прав пользователя. Именно создание базы и пользователя
Вы их видите на этом видео? Я на этом видео только в инкогнито главы вижу:) Это пока не для всех ютуб включил. Вот как их делать: 1) таймлайны должны начинаться с 0:00 (с 00:00 тоже работает) 2) в таймлайнах должно быть больше трех меток (глав) 3) таймлайны должны идти строго друг за другом по времени (если не соблюдена последовательность - не сработает) 4) расстояние между ближайшими таймлайнами - 10 сек и больше 5) таймлайн-навигацию нужно распологать в описании к видео
@@t0digital А с этого - работают))) Причем вижу главы даже у своих видео)) сейчас затестил по Вашей инструкции написал таймкоды в описании к первому видео на канале и магия заработала))
Доброго времени суток, может кто поможет советом, делаю для формы(Django) регистрации рекапчу подключаю библиотеку requests для обращения к гугл апи, и получаю ошибку ModuleNotFoundError: No module named 'requests' , захожу по ssh на сервер Ubuntu 20 там стоит питон 3.8 проверяю зависимости через pip freeze - библиотека присутствует, пробовал удалить и установить но возникает проблема что я и удалить пакет не могу так как он отсутствует. Хотя физически он есть. Запускал питон в консоли и пробовал импортировать библиотеку там и там она импортируется без проблем. В виртуальном окружении эта библиотека тоже есть но почему то джанго не может её найти. Такая проблема впервые и буду благодарен за любые советы, спасибо
Нет, конечно, он же платный, ему пофик что вы храните. Ну, в рамках законодательства, думаю:). Стоимость холодного хранилища (для бэкапов) на сегодня 67 коп в месяц за 1 Гб. Стандартного (для статики на сайте) 1.26 руб в месяц за 1 Гб, то есть буквально копейки
Ааа... как это развидеть? Бекапить postgres кустомным скриптом на питоне? Серьезно? Можно же просто в 1 строчку: pg_dump | gzip | openssl | aws-cli В этой же одной строчке можно пульнуть статус бекапа в эластик/прометей/etc и еще чегото сделать, если надо. Зачем так усложнять? Кто с этим потом будет разбираться и как поддерживать? Ставить virtenvs, когда библиотеки с еще нужными для чегонибудь разойдутся по версиям, сам питон обновится? Поражаюсь тому как современное поколение ИТшников безалаберно относится к ничем не мотивированному увеличению сложности. (особенно этим стратают те кто как-то связан с JS) Если хочется хорошего бекапа постгреса есть рассово верный wal-g, а для универсальности бекапа вообще restic. С аналогичным уровнем сервиса b2 сторадж как правило сильно дешевле.
В описании видео есть пометка о том, что здесь мы на pg_dump. WAL-G хорош для больших баз под нагрузкой, но он сложнее pg_dump и в для простых случаев избыточен, стрелять из пушки по воробьям. Касательно aws-cli - в нашем случае нужно больше гибкости, чем простая цепочка с aws-cli, и кастомные скрипты её дают. Проверка hostname в restore скрипте, например. Понятно, что это можно написать на bash - ну а можно на более читаемом питоне. Касательно поддержки - всё нужно аккуратно поддерживать. И aws_cli тоже надо ставить, конфигурить, обновлять и следить, чтобы ничего не сломалось, ноль разницы с virtualenv, который к тому же уже на сервере настроен, если проект на питоне. По сути вопрос здесь в том, на чем писать такие админские задачи - вы вероятно за bash, а я за питон. Есть вообще кто на js такое пишет, и нормально себя чувствует. Все варианты хороши:)
Этот формат - королевский подгон!
Понятная речь, доступный формат, минимум понтов.
Узнал за 20 минут больше фишек, чем за 2 крайних месяца.
Лайк!
Это значит ты у него спиздел «здорова кротоны»?
да прибудет с ним сила!
крайних?
Если ты узнал за 20 минут больше чем за 2 месяца, значит ты 2 месяца ничего не делал)
Спасибо за ваш труд! Было очень интересно и очень полезно! В комуфляже вы супер выглядете.
Спасибооо!
Спасибо тебе большое за то что делишься такой информацией. Благодаря тебе сэкономил огромное количество времени. Все доходчиво и понятно разобрано!
Такому видео я с удовольствием поставил лайк. Спасибо автору.
Спасибо 👍
Интересно посмотреть на чужую реализацию, сам делал такую скриптину на дамп в S3. О шифровании и сжатия не подумал, + юзать os. для вызова команды не догадался и ставил фабрику. Еще из различий, выносил в .env ключи и прочие переменные, чтобы было удобно ставить на любой сервак и просто загружать в крон.
В очередной раз лайк за видос, максимум информации простым языком и без воды.
Да, на гитхабе я тоже вынес в env переменные, так лучше, конечно. На гитхабе немного отрефаченная версия. Спасибо!
отличные видосы, каждый смотрю с удовольствием! спасибо
Спасибо!
Огромное спасибо! Сэкономил кучу времени, посмотрев данный мануал.. Подписался, лайк поставил!
Отлично! Рад, что полезно!
Супер, спасибо!
Алексей, сделай, пожалуйста, видео о том, как организовать проект на сервере. Не могу понять как лучше это сделать для автоматизации, а именно:
- что должно быть в докер-контейнере, а что туда не надо класть?
- где должен быть, например, Nginx? Его настраивать в том же контейнере? Или один раз настроить на сервере? А зачем тогда есть официальный контейнер?
- по статике жду видео :)
- как "располагать" сервер БД
- и т.д.
В моем понимании сейчас схема выглядит так:
- купили сервер, настроили доступ, Nginx, DB
- пулл реквест в VCS
- CI инструменты прогоняют тесты, в случае успеха собирают контейнер, отправляют его в докерхаб
- из докерхаба он вытаскивается на сервер
- на сервере старый останавливается, новый запускается
- если 200, старый удаляется
Очень хотелось бы узнать твой опыт и рассуждения на эту тему
Как всегда информативно .
Спасибо!
Понравился формат изложения: прошлись по каждой функции, описали когда она вызывается и что делает! Супер!
P.S. Было бы здорово, если бы выпускали больше видео для начинающих) Спасибо!
Стараюсь делать и для новичков, и для продвинутых. Возможно с упором на вторых, потому что материалов для новичков уже есть много
Дядь, ты положительный брат-близнец Руслана Гительмана!
хорошо, если положительный:)
При декомпрессии бэкапа перед заливкой его в БД PG не стоит сверить контрольные суммы или еще чего что бы исключить возможность ошибок при архивации и распаковки?
Ого! А я обычным простеньким bash скриптом в папочку на сервере сохраняю дампы и гзипнутую папку media. Ваше решение явно лучше.
Превьюшка напомнила улыбку Дукалиса :)
Это наша корова!
Я хочу видос про то как статику хранить в Яндекс Облаке)))))
Как всегда лайк ,спасибо !
спасибо!
Hello darkness, my old friend. Уж простите, но в начале видео Вы какой-то сероватый
и сразу же как-то вспомнилось 😂
Пробую разные цветовые профили)))
Хотелось бы увидеть Ваш список рекомендуемой литературы!
Прибить продакш базу - это же лучший квест, как провести весело выходные)
Мы быстро подняли, но минут 10 сервис лежал. Опыт дело такое:)
Интересно и по существу.
Рад, что полезно 💪
У меня возник вопрос: почему connection не закрываем? Мне все время толдычили что нужно закрывать все ресурсы, которые используются в скрипте...
В сурсе я увидел with statement, но это только один раз :(
Почему не создать функцию, которая вернёт объект connection, а в других функциях не использовать его в качестве аргумента... А уже в конце этот connection закрыть...
Или нету смысла париться на счёт закрытие ресурса?
Спасибо за видео, как раз периодический делаю дамп базы данных, теперь еще и хранилище подключу.
Подскажите, где правильней хранить дамп с БД приложении Джанго на сервере? в папке Media?
Папка media может быть открыта через веб (иногда открыта), тогда базу сможет скачать любой делающий. Лучше класть в директорию, точно закрытую от веб, в любое место. Я использую /tmp как временное хранилище перед выгрузкой в облако
Круто)
Я не понял от куда там credential взялся в папке .aws?
Все прекрасно, но меня мучает вопрос, почему на 16:52 не "Database decrypted", впрочем это уж точно мелочи.
p.s.
Можно было бы вставить ещё пару слов про использование сайтовский exit в скриптах вместо "правильного" sys.exit. Зная любовь автора канала к чистому и красивому коду, это выглядит немного странно.
Лайк
крутяк ..
Алексей, спасибо за Ваши видео. Очень познавательно. Если будет возможность, запишите, пожалуйста, видео, как делать подобные python скрипты "user friendly", чтобы люди, которые ничего не знают о командной строке могли бы их как-то запускать.
Я думаю, что такие штуки - для программеров или админов, они должны уметь запускать их в командной строке. А программы для обычных людей на питоне можно собирать в готовые исполнимые пакеты (exe для Windows, например), хотя там всё равно есть много нюансов с зависимостями, их надо хорошо тестировать в разных версиях операционной системы
@@t0digital Спасибо за ответ. Понял. Значит сложности с этим ) Версия операционной системы обновилась и ничего у заказчика не работает.
вариантов, что могло произойти, много, надо смотреть по ошибке. Что пишет, в чем ошибка?
@@t0digital Нет. Я просто общий случай рассматриваю. Прикидываю стоит в это ввязываться или нет, если такое заказчик попросит. В основном программы пишу для веба.
Катан) продолжай пожалуйста) я учу python для себя) ты для меня пример для подражания))))
о, котан, поправился )
Жду окончания карантина, ага:)
Народ, привет!
Важная заметка:
Если у Вас итоговый бекап больше 1.9 Гб - не используйте openssl
Если зашифровать, с флагом -stream, ещё реально - то вот расшифровка таких файлов становится невозможной средствами openssl --decrypt
Поскольку в сурс коде есть зашитый лимит на выделение памяти через маллок, куда будет выгружаться архив
Смотрите в стороны gpg и его потокового шифрования
Все круто, можно расширить тему по удаленному поднятию db PostgreSQL из скрипта python с одного сервера на другом. Дней 15 бился над этой проблемой и бросил не решив ее. Не проходит из-за прав пользователя. Именно создание базы и пользователя
Гительман здорового человека)
Спасибо
Приветствую дружище, большой привет с Урала, как всегда приятно смотреть твои выпуски, но что с твоим имиждем ? Вместо стива джобса какой то егерь )))
Спасибо! С чёрными футболками пока напряжёночка, напряжёночка:)
Алексей! Воу! А как главы в видео добавлять?) это только с новыми видео работает?)
Вы их видите на этом видео? Я на этом видео только в инкогнито главы вижу:) Это пока не для всех ютуб включил. Вот как их делать:
1) таймлайны должны начинаться с 0:00 (с 00:00 тоже работает)
2) в таймлайнах должно быть больше трех меток (глав)
3) таймлайны должны идти строго друг за другом по времени (если не соблюдена последовательность - не сработает)
4) расстояние между ближайшими таймлайнами - 10 сек и больше
5) таймлайн-навигацию нужно распологать в описании к видео
@@t0digital Да, вижу)) причем залогиненный)) я чего и удивился когда главы увидел)) Спасибо за пояснения)))
О, отлично! Значит всем, кроме меня на моих видосах это уже видно, здорово:)
@@t0digital Странно, а с этого аккаунта не работают главы(((
@@t0digital А с этого - работают))) Причем вижу главы даже у своих видео)) сейчас затестил по Вашей инструкции написал таймкоды в описании к первому видео на канале и магия заработала))
делай добро и ...делись с людьми. Респект!
PS// Fabric же есть...www.fabfile.org/
Примерно тоже самое делаю - но на bash+s3cmd
А ты не тот чувак с собеседования hexlet? Если да, расскажи, чем дело кончилось?)
Это не я тот чувак)
Крута тута)
тута дааа:)
Если пришлось перевыпустить сертификат, старые архивы протухнут?
Без старых ключей шифрования расшифровать не получится, если речь об этом
pg_dump не для больших баз данных. На больших он уже работает долго. У себя используем pgBackRest
Мы планируем яндексовый WAL-G прикручивать с ростом базы. Да, pg_dump это скорее инструмент разработки, не администрирования
Здаров, котан!!!
Все хорошо, но я бы не хардкодил константы в скрипте. Лучше передать их как cli args и задать значения по умолчанию, если таковые требуются.
в версии на гитхабе это есть
Когда видео с code review??
Скоро
Доброго времени суток, может кто поможет советом, делаю для формы(Django) регистрации рекапчу подключаю библиотеку requests для обращения к гугл апи, и получаю ошибку ModuleNotFoundError: No module named 'requests' , захожу по ssh на сервер Ubuntu 20 там стоит питон 3.8 проверяю зависимости через pip freeze - библиотека присутствует, пробовал удалить и установить но возникает проблема что я и удалить пакет не могу так как он отсутствует. Хотя физически он есть. Запускал питон в консоли и пробовал импортировать библиотеку там и там она импортируется без проблем. В виртуальном окружении эта библиотека тоже есть но почему то джанго не может её найти. Такая проблема впервые и буду благодарен за любые советы, спасибо
Почему просто не запаролить архив?
надёжнее
А почему `unencrypt_...` а не `decrypt_...` сам флаг команды openssl намекает на такой нейминг?)))
У Яндекс.Облака ограничение 5 Гб на один файл в S3. В текущей реализации может не влезть
Вроде бы у яндекса есть апишка для обычного диска, нужно что то подобное сделать)
Да, там раньше был webdav, если не прикрыли
А яндекс за хранение бэкапов не банит?
Нет, конечно, он же платный, ему пофик что вы храните. Ну, в рамках законодательства, думаю:). Стоимость холодного хранилища (для бэкапов) на сегодня 67 коп в месяц за 1 Гб. Стандартного (для статики на сайте) 1.26 руб в месяц за 1 Гб, то есть буквально копейки
Хорошие скрипты, но эмоджи в терсинале вызывают сомнения.
В скрипте loader импорт pytz необязателен
убрал на github'е, там местами отрефаченный код. Да, python это не go, где так вот не наимпортишь лишнего)
а где здарова котаны?
Где-то рядом:)
Спасибо за имоджи.😏
Они хороши)))
Ааа... как это развидеть?
Бекапить postgres кустомным скриптом на питоне? Серьезно?
Можно же просто в 1 строчку: pg_dump | gzip | openssl | aws-cli
В этой же одной строчке можно пульнуть статус бекапа в эластик/прометей/etc и еще чегото сделать, если надо.
Зачем так усложнять? Кто с этим потом будет разбираться и как поддерживать? Ставить virtenvs, когда библиотеки с еще нужными для чегонибудь разойдутся по версиям, сам питон обновится?
Поражаюсь тому как современное поколение ИТшников безалаберно относится к ничем не мотивированному увеличению сложности. (особенно этим стратают те кто как-то связан с JS)
Если хочется хорошего бекапа постгреса есть рассово верный wal-g, а для универсальности бекапа вообще restic. С аналогичным уровнем сервиса b2 сторадж как правило сильно дешевле.
В описании видео есть пометка о том, что здесь мы на pg_dump. WAL-G хорош для больших баз под нагрузкой, но он сложнее pg_dump и в для простых случаев избыточен, стрелять из пушки по воробьям.
Касательно aws-cli - в нашем случае нужно больше гибкости, чем простая цепочка с aws-cli, и кастомные скрипты её дают. Проверка hostname в restore скрипте, например. Понятно, что это можно написать на bash - ну а можно на более читаемом питоне.
Касательно поддержки - всё нужно аккуратно поддерживать. И aws_cli тоже надо ставить, конфигурить, обновлять и следить, чтобы ничего не сломалось, ноль разницы с virtualenv, который к тому же уже на сервере настроен, если проект на питоне.
По сути вопрос здесь в том, на чем писать такие админские задачи - вы вероятно за bash, а я за питон. Есть вообще кто на js такое пишет, и нормально себя чувствует. Все варианты хороши:)
писать такое на питоне грешно
я в надежде, что нас не покарают
ты за два года стал готовится к мобилизации? :)
коммент в тему сентября 2022:)