Для копирования файлов по ssh между компьютерами под управлением Linux применяется команда scp. Рассмотрим, как можно копировать файлы с одного компьютера на другой по ssh, используя команду scp.
Синтаксис команды scp
Синтаксис команды scp следующий:
Команда scp принимает на вход различные опции (см. примеры ниже), а также файл или директорию, которую необходимо скопировать (аргумент что_копируем). Последним аргументом указывается путь назначения, в который будет произведено копирование (аргумент куда_копируем).
Аргументы что_копируем и куда_копируем могут быть, как локальными путями, так и удаленными. То есть можно копировать файлы с удаленного компьютера на локальный и наоборот. Можно копировать файлы с удаленного компьютера на другой удаленный компьютер.
что_копируем и куда_копируем имеют следующий синтаксис:
имя_пользователя — это имя пользователя для подключения по ssh.
IP_адрес — IP адрес компьютера (хоста) на который или с которого будет копирование.
Копирование локального файла
Локальный→Удаленный
Рассмотрим простой пример. Скопируем по ssh локальный файл myfile.dat на компьютер с IP адресом 192.168.1.74 в директорию /home/pingvin.
scp myfile.dat pingvin@192.168.1.74:/home/pingvin
Указываем порт
Выполним тоже самое, но укажем еще и порт для подключения по ssh (используем опцию -P). Обратите внимание, что опция для указания порта это прописная буква P!
scp -P 6773 myfile.dat pingvin@192.168.1.74:/home/pingvin
Копирование файла с удаленного компьютера на локальный
Удаленный→Локальный
Теперь наоборот. Скопируем файл с удаленного компьютера в нашу текущую директорию.
scp pingvin@192.168.1.74:/home/pingvin/myfile.dat .
Копирование директории
Скопируем с нашего локального компьютера директорию ~/mydir на удаленный компьютер в директорию /home/pingvin. Используется опция -r.
scp -r ~/mydir pingvin@192.168.1.17:/home/pingvin
Копирование со сжатием данных (ускорение)
Скорость копирования файлов можно увеличить. Для этого используется опция -C. Данная опция выполняет сжатие файлов при копировании, таким образом по сети передается меньшее количество данных. Сжатие выполняется только при передаче данных, то есть результирующий файл будет в первоначальном виде.
Пример копирования файла myfile.dat с включенным сжатием.
scp -C myfile.dat pingvin@192.168.1.74:/home/pingvin
Сохранение атрибутов файла
Чтобы результирующий файл получил те же атрибуты что и исходный файл, используется опция -p (не путать с опцией -P для указания порта). При использовании опции -p сохраняются права доступа к файлу, владелец файла, временные метки и так далее.
scp -p myfile.dat pingvin@192.168.1.74:/home/pingvin
Если в пути есть пробелы
Если путь до удаленного файла/директории содержит пробелы, то при использовании команды scp необходимо этот путь заключить и в одинарные и двойные кавычки:
scp -r pingvin@192.168.1.17:"'/home/pingvin/Some dir with spaces"' .
Это связано с тем, что одни кавычки используются при разборе пути на локальной стороне, а вторые на удаленной.
Для получения полной справки по команде scp выполните в терминале:
man scp
Комментарии
18:19