Twitter GitHub

Загрузка и скачивание файлов на удаленном сервере с помощью iTerm2 и Z-Modem

Знакома ли вам ситуация, когда вы находитесь в терминале на удаленном сервере и вам нужно скачать с этого сервера какой-то файл (дамп базы данных или лог)? Или наоборот, закачать какой-то файл с локального компьютера на сервер? Я сталкиваюсь с этим постоянно и обычно это проблема решается с помощью утилиты scp.

Однако, если вы используете Mac OS и iTerm2 (в частности iTerm2 v2.0 и выше), то есть чуть более удобное в большинстве случаев решение — использование протокола Z-Modem и триггеров в iTerm2.

Действия для локальный машины с Mac OS

  1. устанавливаем lrzsz с помощью brew: brew install lrzsz
  2. устанавливаем скрипт iterm2-zmodem в /usr/local/bin:
    $ cd /usr/local/bin
    $ wget https://raw.githubusercontent.com/aurora/iterm2-zmodem/master/iterm2-zmodem
    $ chmod +x iterm2-zmodem
  3. идем в настройки iTerm2: Profiles -> Advanced -> Triggers -> Edit
  4. добавляем 2 триггера вот с такими параметрами:
    Regular expression: \*\*B0100
    Action:             Run Silent Coprocess
    Parameters:         /usr/local/bin/iterm2-zmodem sz
    
    Regular expression: \*\*B00000000000000
    Action:             Run Silent Coprocess
    Parameters:         /usr/local/bin/iterm2-zmodem rz

На этом с локально машиной все.

Действия для удаленного сервера

На удаленном сервере также необходимо иметь пакет lrzsz. Он вроде как есть в любом дистрибутиве и для Debian/Ubuntu ставится банальным sudo apt-get install lrzsz. Больше от сервера нам ничего не нужно.

Используем!

Для загрузки файла на удаленный сервер выполняем в консоле сервера команду rz:

$ ssh user@remote-server.com
user@remove-server.com:~$ rz

Выскочит окошко Mac OS для выбора файла, который вы хотите отправить на удаленный сервер. Выбираем, отправляем. Файл пишется в директорию, из который мы вызвали rz.

Для скачивания файла — выполняем в консоле сервера команду sz filename.ext:

$ ssh user@remote-server.com
user@remove-server.com:~$ sz database.sql apache.log

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

Вот такой простой и удобный способ работы с файлами на сервере не покидая консоли и не открывая новую сессию с scp. Удачного вам администрирования! :)

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *