Удалённая, консольная работа с файлами

Одна из базовых операций в Unix это копирование файлов, из одной директории в другую. C появлением интернета появилась и потребность копировать файлы между машинами. Для этого были написаны соответствующие инструменты, о которых знают не все.

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

Я видел множество реализаций, начиная от отправки почты себе на ящик, до установки дропбокса, некоторые копируют файлы в публичные каталоги FTP, HTTP, потом вытягивают/заливают уже на нужную машину.

Это все мягко говоря, неудачные способы.

SCP, SSH ForwardAgent и реальные хосты машин, решают эту проблему раз и навсегда.

1) Я завожу сабдомен для серверов с которыми работаю, чтобы не запоминать IP адреса. Например: к домену fluder.co я добавляю сабдомен work.fluder.co связанный с IP адресом моего сервер.

2) SSH настраивается на работу при помощи ключей.

3) На компьютере откуда я работаю дописывается две строчки в .ssh/config:

Host *
    ForwardAgent yes

Что это дает? Это позволяет расшарить ssh-agent на машину к которой я подключился. То есть я пишу ssh work.fluder.co, и оттуда могу заходить без ввода passphrase на следующую машину, например ssh another-host.fluder.co

4) SCP позволяет копировать файлы с машины на машину без лишних действий. Он так же прост как и cp, да и работает между серверами так, как будто это одна машина.

Итого

Я захожу на рабочий сервер:

$ ssh work.fluder.co

мне например нужно сдампить базу данных, я командую:

$ mysqldump -e -Q --add-drop-table -u XXX -pXXX DBNAME > db.sql

Третьей командой я копирую дамп прямо себе на рабочий компьютер, в домашний каталог, с которого и запускался изначально shell:

$ scp db.sql home.fluder.co:/Users/fluder/Downloads

(ssh на нем естественно расшарен в мир)

Если мне нужно что-то скопировать с домашней машины на удаленную, тогда я командую:

$ scp config.tar.gz work.fluder.co:/home/fluder

Это примитивно и при этом очень удобно, не требует ключей, весь трафик шифруется. Мне кажется выбор очевиден.

P.S. Если использовать ZSH, то ко всему работает еще и автодополнение директорий удаленных серверов.

Upd: How-to по ключам тут


comments powered by Disqus