Копирование с помощью scp
Scp для передачи данных использует ssh, т. е необходимо иметь ssh доступ на удалённый хост.
На удалённом хосте.
1. Файл.
$ scp ./local_file username@remotehost:
Скопирует локальный файл ./local_file на удалённый хост remotehost в домашнию директорию пользователя username. Можно указать название файла на удалённом хосте(scp ./local_file username@remotehost:remote_file).
2. Директория.
$ scp -r /etc/local_folder username@remotehost:/etc
Скопирует локальную директорию /etc/local_folder на удалённый хост в директорию /etc
С удалённого хоста.
3. Файл.
$ scp username@remotehost:remote_file ./
Скопирует удалённый файл remote_file из домашней директории username на локальную машину в текущую директорию
4. Директория
$ scp -r username@remotehost:/etc/remote_folder /etc
Скопирует удалённую папку /etc/remote_folder/ на локальную машину в директорию /etc
Копирование с помощью sftp
Sftp это интерактивная программа передачи файлов, подобная ftp, которая выполняет передачу данных в шифрованном виде, используя ssh, т.е необходимо иметь ssh доступ на удалённый хост.
Копировать директории стандартный sftp клиент не умеет.
На удалённый хост.
5.
$ sftp remotehost
Connecting to remotehost…
sftp> lls
remote_file local_file
sftp> put local_file
Uploading local_file to /home/username/local_file
local_file 100% 0 0.0KB/s 00:00
sftp> ls
local_file
sftp> quit
C помощью команды put копируем локальный файл ./local_file на удалённый хост remotehost в домашнию директорию пользователя username. Команда lls выводит листинг локальной директории, команда ls выводит листинг удалённой директории.
С удалённого хоста.
6.
$ sftp remotehost
Connecting to remotehost…
sftp> ls
remote_file
sftp> get remote_file
Fetching /home/username/remote_file to remote_file
sftp> quit
C помощью команды get копируем удалённый файл remote_file из домашней директории username на локальную машину в текущую директорию.
Копирование с помощью netcat
Для начала, если у вас Debian или Ubuntu то поставьте netcat-openbsd и pipeviewer(pv).
$ sudo apt-get install netcat-openbsd pv
Варианты с pv показывают статистику передачи файла, таким образом можно замерять пропускную способность сетевого канала.
На удалённый хост.
7. Файл
$ nc -l 1234 | pv | cat > ./remote_file
или
$ nc -l 1234 > ./remote_file
Принимаем файл на удалённом хосте
$ cat ./local_file | pv | nc remotehost 1234
или
$ nc remotehost 1234 < ./local_file Отправляем файл на удалённый хост 8. Директория. $ nc -l 1234 | pv | tar x
или
$ nc -l 1234 | tar x
Принимаем директорию на удалённом хосте
$ tar -cf — ./local_folder | pv | nc remotehost 1234
или
$ tar -cf — ./local_folder | nc remotehost 1234
Отправляем директорию на удалённый хост
C удалённого хоста.
9. Файл.
$ cat ./remote_file | pv | nc -l 1234
или
$ nc -l 1234 < ./remote_file Передаём файл с удалённого хоста $ nc remotehost 1234 | pv | cat > ./local_file
или
$ nc remotehost 1234 > ./local_file
Принимаем файл на локальной машине
10. Директория.
$ tar -cf — ./remote_folder | pv | nc -l 1234
или
$ tar -cf — ./remote_folder | nc -l 1234
Передаём директорию с удалённого хоста
$ nc remotehost 1234 | pv | tar x
или
$ nc remotehost 1234 | tar x
Принимаем директорию на локальной машине
P.S
Ну и последний бонусный пример, можно отдавать файлы по http:
$ python -m SimpleHTTPServer
или
# nc -l 8000 < ./shared_file
По материалам : admins.tk
sftp -oPort= пользователь@ip-адрес хоста
при нестандартном порте