SCP
Протокол SCP (secure copy) разработан специально для копирования файлов посредством SSH. В linux-системах для операций перемещения существует одноименная утилита scp, входящая в состав openssh.
Для того, чтобы скинуть бэкапы сервера на другую машину, можно выполнить следующую команду:
scp $local_path/$backup $login@$host:/$remote_path
где
$local_path/$backup - путь и название локального объекта/группы объектов (файлы, папки),
$login@$host- логин и адрес удаленной машины (IP или доменное имя),
$remote_path - путь на удаленной машине, куда следует положить объекты.
Работает и в обратную сторону. Чтобы забрать архив бэкапа с удаленной машины, можно выполнить:
scp $login@$remote:/$remote_path/$backup $local_path/$backup
Для передачи папок необходимо указывать ключ -r, для подключения к отличному от 22 порта ключ -p.
Такой подход неудобен тем, что для каждой операции необходим ввод пароля для авторизации на удаленной машине. Проблема решаема использованием ssh-ключей вместо обычных паролей, но такой подход не всегда применим. Кроме того, необходимо явное указание объектов для перемещения. Что не всегда удобно (при большом количестве файлов в разных директориях, к примеру). Чтобы просто скопировать несколько файлов с удаленной машины на локальную, в текущую директорию, необходимо сочинить конструкцию вроде:
scp $login@$remote:/$remote_path/\{file1,file2,file3\} .
Note: По умолчанию scp использует при передаче данных алгоритм шифрования Triple-DES. Можно несколько увеличить скорость передачи, включив алгоритм Blowfish, для этого в командной строке следует добавить -c blowfish.
SSHFS
Исправить положение можно, подмонтировав директории удаленной машины на локальную и управлять ими, как при обычной работе с системой. Для этого в linux-системах можно использовать пакет sshfs, основанный на fuse. Работать с ним просто:
Устанавливаем пакет (в Debian/Ubuntu):
sudo apt-get install sshfsСоздаем точку монтирования на локальной системе, например:
mkdir /mnt/othercompМонтируем необходимую директорию удаленной машины:
sshfs $login@$host:$remote_path $local_pathПосле использования отключаем примантированную директорию командой:
fusermount -u $local_path
При использовании sshfs существует возможность авторизации по ключам, как при обычном ssh-соединении. Также существуют клиенты под другие операционные системы:
для Windows-семейства можно попробовать DokanSSHFS(для работы необходимо наличие библиотек с того же сайта);
под Mac существует проект MacFUSE (и даже графическая оболочка есть);
в FreeBSD можно найти порты требуемых пакетов, они расположен здесь: sysutils/fusefs-kmod, sysfsutils/fusefs-libs и sysfsutils/fusefs-sshfs.
Ссылки: