Пятница и «Международный день пива» прям подкосили. Спасибо, но в следующем году я на этот фестиваль не куплюсь

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

Частенько меня просят скинуть какой-нибудь огрызок лога, выгрузку и т.п. Тут алгоритм простой:

  • зашел на сервер по ssh
  • нашел/сделал то, что нужно передать
  • если файл большой, то сжать
  • вспомнить синтаксис scp
  • на локальной машине натыкать команду чтобы забрать себе этот файл

scp -r user@bashdayz:/tmp/nginx.log /home/user/tmp/

  • скинуть файл человеку в слак/маттермост
  • если файл большой, выложить его на корпоративный google drive
  • скинуть человеку ссылку на файл на корпоративном диске

scp (Secure CoPy) — утилита для безопасного копирования данных между Linux-системами по протоколу SSH

Тут подходит фраза из мема: вот это нихуя ничего себе! Ладно если это делаешь раз в месяц. Но если такое происходит пару раз в неделю, то ощущаются первые нотки выгорания.

Роман Шубин
Роман Шубин
CEO & CTO, Главред в «Цифровой улей»
Задать вопрос
Все гениальные вещи придумали ленивые люди. А мы с тобой одни из них. Поэтому бо́льшую часть я успешно автоматизировал через bash.

А вот и сам скрипт. Обзови его trans и закинь в /usr/local/sbin. Ну и не забывай про chmod +x /usr/local/sbin/trans.

Запускается всё это безобразие так: trans <файл>

#!/bin/bash

SIZE=1000000

if [ -n "$(find "$1" -prune -size +"$SIZE"c)" ]; then
    tar -czvf /tmp/$1.tar.gz $1
    curl --upload-file /tmp/$1.tar.gz https://transfer.sh/$1.tar.gz
    rm /tmp/$1.tar.gz
else
    curl --upload-file $1 https://transfer.sh/$1
fi

Логика такая:

  1. Если размер файла > 1 мб, то сжимаем
  2. После сжатия загружаем файл в сервис transfer.sh
  3. Подчищаем за собой
  4. Если файл < 1 мб, то просто загружаем как есть в тот же сервис transfer.sh
  5. После загрузки в консоль выводится ссылка для скачивания
  6. Копируем полученную ссылку и передаем разработчику
  7. Профит. Минимум действий, максимум удобства

Сервис transfer.sh это очень удобная и простая штука, которая позволяет обмениваться файлами с помощью curl/wget. Без регистрации и смс. Лимиты приличные 10гигов на файл, 14 дней хранятся на сервере. Есть возможность зашифровать перед отправкой и проверить на вирусы. И все это бесплатно.

А еще в curl можно передать заголовки -H “Max-Downloads: 1” -H “Max-Days: 5” и тогда файл разрешат скачать только один раз, а через пять дней он сам удалится. Пожалуй очень удобно.

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

Ну а если хочется передать сканы документов или реквизиты банковских карт, то в мой скрипт ты можешь встроить gpg шифрование. Либо переделать сжатие на 7z и зашифровать по максимуму. Но опять же не рекомендую, лучше передавай важные документы другим, более безопасным способом.

Мысли в слух: Вот есть корпоративный google диск, хранишь ты там абсолютно всё, включая секреты компании. Безопасно? НЕТ! Гугол давно уже у тебя всё спёр и всё про всех знает. Так что можно булки расслабить и перестать параноить. Ладно, опять в лирику ударились.

Короче бери на заметку, дорабатывай, переделывай. Можешь добавить xclip/pbcopy чтобы ссылка автоматом в буфер обмена копировалась. Ну и зайди на сайт transfer.sh и посмотри все возможности, которые они предоставляют. Там все с примерами, разберется любой.

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

Удобно? Удобно! А главное максимально просто. Хорошо тебе провести остаток выходных, ну и увидимся!