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 (для работы необходимо наличие библиотек с того же сайта);
- в FreeBSD можно найти порты требуемых пакетов, они расположен здесь: sysutils/fusefs-kmod, sysfsutils/fusefs-libs и sysfsutils/fusefs-sshfs.
Ссылки: