Как перемещать файлы между серверами

admin

Самый простой и безопасный вариант скопировать файл с одного сервера на другой – это использовать команду scp:
scp file.txt user@host:/path/file.txt
## копирование локального файла на сервер

Для того, чтобы скопировать файл с сервера на локальный комп:
scp user@host:/path/file.txt file.txt
## то же самое, только наоборот

Для авторизации лучше использовать [https://www.digitalocean.com/community/tutorials/how-to-set-up-ssh-keys-on-ubuntu-1604 ключи]:
scp **-i ~/.ssh/id_rsa.pub** file.txt user@host:/path/file.txt
## безопасное копирование, без пароля

Чтобы скопировать данные с одного удаленного сервера на другой:
scp user@host_1:/path/file.txt user@host_2:/path/file.txt
## При этом данные будут переданы напрямую с сервера на сервер

Альтернатива scp

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

  • Аналитические выгрузки с баз данных и отправка данных на компы аналитиков или BI системы.
  • Загрузка на сервер временного файла, который сгенерирован локально.
  • Сбор со всех серверов файлов определенного типа и консолидация в едином месте (например, сбор access.log с нескольких узлов).

Мы юзаем bashupload.com. Сервис позволяет быстро загрузить файлы с командной строки и выгрузить любым удобным способом:

curl https://bashupload.com/**name.txt** --data-binary @**file.txt**
## загрузка файла с командной строки на bashupload.com

name.txt – это имя файла, под которым будет доступен загруженный файл на сервер. file.txt – это имя локального файла, который нужно загрузить.

После загрузки, в консоли видно путь и команду для скачивания:

Uploaded 1 file, 23 bytes

wget https://bashupload.com/iq7Kv/name.txt

## Скачать можно сразу после загрузки, в т.ч. в браузере или на мобильном устройстве

Файл хранится на сервере 7 дней, и его можно качать неограниченное количество раз. В случае, если загружаемые данные критичны к безопасности, файлы стоит шифровать перед загрузкой:
**gpg -ac -o- file.txt** | curl https://bashupload.com/encrypted.txt --data-binary @-
## После скачивания, файл нужно будет расшифровать тем же методом

Кроме этого, в сервисе есть две удобные возможности:

Дописывание содержимого файла

В случае, если вы консолидируете однотипные файлы (например, логи) с нескольких серверов, достаточно загрузить файл с первого с заголовком feed: 1:

curl "https://bashupload.com/access.log" **-H "feed: 1"** --data-binary @access.log
## инициализация дописывания файла

А после – использовать инструкцию на остальных серверах для дописывания файла:

Fed 39945 bytes to access.log on "xDRD" key
Total feed size 39945 bytes

wget https://bashupload.com/xDRD/access.log

**To continue feeding more data to this file use: 
curl "https://bashupload.com/access.log" -H "feed-key: xDRD" --data-binary @access.log**

## Команда для консолидации загружаемых файлов в один

В любой момент времени можно будет скачать консолидированный файл:

wget https://bashupload.com/xDRD/access.log

## Скачивание консолидированного файла

Перезаписывание файла

Если у вас, как и у нас, бывает необходимость делать различные выгрузки для команд (например, выгрузка пользователей для маркетинга по определенному критерию) – вам приходилось изобретать метод доставки и обновления этих данных. Мы используем связку bashupload.com + Google Spreadsheets для подобных задачи.

Чтобы загрузить обновляемый файл, необходимо добавить заголовок rewrite: 1 при загрузке:
curl https://bashupload.com/data.csv --data-binary @data.csv **-H "rewrite: 1"**
## Заголовок, открывающий режим перезаписи загружаемого файла

Чтобы перезаписать файл с новым содержимым, нужно использовать инструкцию из результата загрузки:
curl "https://bashupload.com/**CpmjE/data.csv**" **-H "rewrite: 1"** --data-binary @data.csv
## Последующая перезапись файла

Как видно, для перезаписи указывается путь с ключом. Ну и этот файл постоянно доступен для загрузки и может быть использован в [https://support.google.com/docs/answer/3093335?hl=en IMPORTDATA для Google Spreadsheets].

Зарепортить баги и закоментить улучшения [https://github.com/golotyuk/bashupload/issues можно в гитхабе]. Больше инфы по использованию [https://github.com/golotyuk/bashupload/blob/master/README.md также там].

<h2>TL;DR

Используйте временное хранилище [https://bashupload.com/ bashupload.com], когда неудобно или нельзя использовать scp.

Останні статті

Обучение Power BI – какие онлайн курсы аналитики выбрать

Сегодня мы поговорим о том, как выбрать лучшие курсы Power BI в Украине, особенно для…

13.01.2024

Work.ua назвал самые конкурентные вакансии в IТ за 2023 год

В 2023 году во всех крупнейших регионах конкуренция за вакансию выросла на 5–12%. Не исключением…

08.12.2023

Украинская IT-рекрутерка создала бесплатный трекер поиска работы

Unicorn Hunter/Talent Manager Лина Калиш создала бесплатный трекер поиска работы в Notion, систематизирующий все этапы…

07.12.2023

Mate academy отправит работников в 10-дневный оплачиваемый отпуск

Edtech-стартап Mate academy принял решение отправить своих работников в десятидневный отпуск – с 25 декабря…

07.12.2023

Переписки, фото, история браузера: киевский программист зарабатывал на шпионаже

Служба безопасности Украины задержала в Киеве 46-летнего программиста, который за деньги устанавливал шпионские программы и…

07.12.2023

Как вырасти до сеньйора? Девелопер создал популярную подборку на Github

IT-специалист Джордан Катлер создал и выложил на Github подборку разнообразных ресурсов, которые помогут достичь уровня…

07.12.2023