Копирование в ssh
Общие сведения
Копирование файлов по проколу ssh осуществляется с помощью двух утилит:
scp и sftp
sftp работает подобно ftp серверу, работает в интерактивном режиме, поддерживает синтаксис ftp и может использоваться как удаленный ftp сервер, при этом в качестве сервера используется ssh
scp
При рекурсивном скачивании scp следует по символическим ссылкам sftp нет.
Программа scp может копировать файлы между двумя удаленными хостами
Если указана опция -3, тогда копирование файлов между удаленными хостами, будет осуществляться через 3-й локальный хост
Для рекурсивного копирования используется опция -r
-P большая используется для указания порта
-l опция в scp для ограничения лимита скорости передачи
rsync
rsync поддерживает синхронизацию каталогов целиком, может сохранять символические и жесткие ссылки, права и владельцев файлов, передачу файлов с сервера на сервер, поддержка транспорта ssh
Опция -e указывает какой транспорт использовать, в параметре указывается порт:
rsync -r -e 'ssh -p 222' ./data root@192.168.1.1:/root/
-r для рекурсивного перебора каталога
-a опция сохраняет все атрибуты файлов, пожалуй важная опция, эквивалент -rlptgoD (но не -H,-A,-X)
-с проверка контрольных сумм
-z сжимать файлы перед передачей
-d удалять файлы, которых нет в источниках, с этой опцией нужно быть осторожнее
-P --progress покажет прогресс синхронизации в процентах
-L копировать содержимое ссылок
-l копировать символьные ссылки
-H копировать жесткие ссылки
-g сохранить группу файлов
-t сохранить время изменения файлов
-p сохранить права для файлов
-E сохранить исполняемость
-X --xattrs сохраняют расширенные атрибуты
-o --owner сохранить владельца (только для суперпользователя)
-g --group сохранить группу
--devices сохраняют файлы устройств (только для суперпользователя)
--specials предложения сохраняют специальные файлы
более подробно man rsync
Пример с наиболее оптимальным набором опций:
$ rsync -Pzarc -e 'ssh -p 222' 'box-12723-0999.20-md5_fffcd02f214fe2c7d28883700f9f5797.tar' root@192.168.1.1:/root/
root@192.168.1.1's password:
sending incremental file list
box-12723-0999.20-md5_fffcd02f214fe2c7d28883700f9f5797.tar
124,019,029 100% 11.37MB/s 0:00:10 (xfr#1, to-chk=0/1)
sftp
Пример подключения:
sftp -P 222 user@92.168.1.3:/uploads/
В данном случае, подобно ftp попадаем в каталог указанный при подключении
Если при подключении будет указан полный путь до файла, данный файл будет загружен на локальную машину
Интерактивный режим sftp
bye - выйти из sftp
Есть ограниченные команды chmod chown, есть команда df для отображения информации о размере файловой системы
get в интерактивном режиме загружает указанный файл в локальную директорию указанную по умолчанию
sftp> get netbash.conf
Fetching /root/data/netbash.conf to netbash.conf
/root/data/netbash.conf
lcd меняет локальную директорию для обмена
sftp> lcd /home/t/Downloads
-r опция позволит скачать каталог и его содержимое разом
get -r netbash
Опция -p или -P позволит скачать файлы с правами доступа и меткой времени
Опция -a позволяет докачать существующие файлы на локальной машине
lmkdir создает директорию на локальной машине
put загружает файлы с локальной машины, на удаленную машину:
sftp> put test.txt
Uploading test.txt to /root/data/test.txt
test.txt
здесь опция -a также синхронизирует файлы, только теперь с локальной машины на удаленную, в целом опции те же что в команде get
reget и reput эквивалентны get -a и put -a
rename переименовать удаленную машину по умолчанию
! перед командой в удаленной машине, выполнит команду в локальном оболочке:
!mkdir test
Источники
Связанные темы
Конфигурация vsftpd в ОС Linux Ubuntu
Установка и конфигурация samba в Linux
Конфигурация openvpn сервера в Linux Alpine
Использование iptables в linux
Базовые понятие о настройках и безопасности в сети
Использование ifconfig в Linux
Настройка openvpn сервера в Linux
Полезные сетевые утилиты Linux
Использование fail2ban в Linux
Конфигурация сети в Alpine Linux