- Копирование файлов с помощью команды SCP
- Необходимость в SSH-сервере
- Синтаксис и использование утилиты SCP
- Выбор пользователя
- Копирование директории
- Копирование с сервера на компьютер
- Команда SCP Linux: безопасное копирование и передача файлов
- Как безопасно копировать файлы с помощью SCP
- Копировать файл с локального на удаленный сервер с помощью SCP
- Копировать с одного удаленного хоста на другой
- Копирование больших файлов с помощью SCP
- Рекомендации по использованию SCP
- Управление разрешениями
- Параметры команды SCP
- Итоги
- Копирование файлов по ssh. Команда scp
- Копирование локального файла
- Локальный→Удаленный
- Указываем порт
- Копирование файла с удаленного компьютера на локальный
- Удаленный→Локальный
- Копирование директории
- Копирование со сжатием данных (ускорение)
- Сохранение атрибутов файла
- Если в пути есть пробелы
Копирование файлов с помощью команды SCP
Передача файлов на удаленный сервер невозможна при помощи обычной физической флешки или другого устройства хранения данных, поэтому пользователям приходится использовать сетевые методы копирования и перемещения объектов. При этом важно выбрать безопасный вариант, реализация которого не займет много времени.
Один из самых надежных способов – использование консольной утилиты SCP в Linux, о которой и пойдет речь далее.
Необходимость в SSH-сервере
Перед началом разбора необходимо остановиться на таком понятии, как SSH-сервер. Он необходим для работы SCP в Linux, поскольку утилита использует именно этот протокол. Вам понадобится установить SSH-протокол и настроить его. Кроме того, важно знать пароль или ключ для подключения, о чем более детально читайте в статье по следующей ссылке.
Синтаксис и использование утилиты SCP
$ scp options user@хост1:файл user2@хост2:file
Это общий синтаксис утилиты, который необходимо использовать при вводе команды в Терминале, чтобы она выполнилась успешно и обработала ваш запрос. Как видно, ничего в этом трудного нет, однако нужно подробнее разобрать доступные опции (они же options в строке синтаксиса):
- -1 – в этом случае используется протокол SSH1;
- -2 – то же самое, но с версией SSH2;
- -B – активация пакетного режима, когда нужно передать сразу пачку файлов;
- -C – использовать сжатие при отправке;
- — l – установка ограничения в кбит/сек (значение задается пользователем вручную);
- -o – добавление опций SSH;
- -p – сохранение времени изменений файлов;
- -r – использование рекурсивного копирования папок;
- -v – переход в более развернутый режим.
Некоторые из перечисленных опций, возможно, пригодятся вам в работе, поэтому рекомендую запомнить их или где-то сохранить с понятными для вас пометками, чтобы знать, когда и что использовать. Далее я развернуто расскажу о популярных опциях и их практическом применении.
Выбор пользователя
scp /home/user/file root@timeweb:/root/
Так выглядит стандартное копирование файлов SCP без применения дополнительных опций. То есть вы указываете путь к файлу (user замените на свое имя пользователя), затем добавляете путь назначения. Одно важное замечание: у пользователя должно быть разрешение на запись в указанную папку, иначе операция прервется.
Копирование директории
Если вы ознакомились с описанным выше списком опций, то уже знаете, что SCP предлагает передачу целых директорий с использованием опции -r. В таком случае строка в Терминале обретает вид:
scp -r /home/user/photos root@timeweb:/root/
Если нужно передать все файлы из определенной папки, замените строку на следующую:
scp -r /home/user/photos/* root@timeweb:/root/
Только не забудьте изменить путь к файлу и место назначения. Как видно, добавилась только косая черта после последней директории и значок *, обозначающий копирование всех элементов.
Копирование с сервера на компьютер
Предыдущие три команды позволяли передавать файлы с локального компьютера на удаленный сервер, однако утилита поддерживает и обратное направление. В таком случае написание команды в консоли немного меняется и обретает примерно такой вид:
scp root@timeweb:/root/file /home/user/
Мы просто поменяли местами пути в команде. Вы можете использовать все те же опции, осуществляя копирование с разными атрибутами или передавая целые каталоги.
Если файлы передаются с одного удаленного сервера на другой, то их адреса указываются следующим образом:
scp root@timeweb:/home/root/index.html root@timeweb:/home/root/www/
При вводе команд обращайте внимание на одну деталь: путь к директории, в которую вы копируете данные, обязательно должен заканчиваться косой чертой, иначе произойдет перезапись файлов, и вы потеряете данные, хранящиеся в конечной папке.
Это была общая информация об утилите SCP, которая поможет скопировать файлы с компьютера на удаленный сервер либо перенести их между удаленными серверами. Используйте опции и не забывайте проверять пути, чтобы случайно не перезаписать важные файлы.
Команда SCP Linux: безопасное копирование и передача файлов
SCP включает шифрование через соединение SSH (Secure Shell). Это гарантирует, что даже если данные будут перехвачены, они будут защищены.
Как безопасно копировать файлы с помощью SCP
Копировать файл с локального на удаленный сервер с помощью SCP
Команда scp позволяет использовать подстановочные знаки.
Используйте символ тильды ~/ для обозначения home/user каталога пользователя.
Вы можете указать строку текста со знаком * .
Например, /~/*.txt заставит SCP скопировать все файлы в домашнем каталоге, которые заканчиваются на .txt .
Как правило, вам не нужно указывать расположение файла в текущем каталоге. Если вы находитесь в каталоге /home/user и хотите скопировать файл test.txt на сервер, вы можете ввести следующее:
scp test.txt username2@destination:/location2
Чтобы скопировать все файлы .txt в домашний каталог username2 , введите следующее:
scp *.txt username2@destination_host:/~/
Если вы укажете только каталог назначения, SCP оставит имя файла как есть.
Чтобы изменить имя файла, определите новое имя файла в месте назначения:
scp test.txt username2@destination_host:/user/home/user1test.txt
В этом примере файл test.txt копируется с локального компьютера, а затем сохраняется как user1test.txt в каталоге пользователя системы назначения.
Если удаленная система настроена на прослушивание SSH-запросов на порт, отличный от порта 22 по умолчанию, используйте переключатель –P , чтобы указать порт:
scp –P 1234 test.txt user2@destination_host:/location2/
Это копирует test.tx t из вашей локальной системы на целевой хост, используя порт 1234.
Копировать с одного удаленного хоста на другой
Вы не ограничены только подключением между локальным компьютером и удаленным сервером.
Чтобы скопировать из одной удаленной системы в другую:
scp user1@host1.com:/files/test.txt user2@user2.com:/files
Это приведет к репликации файла test.txt из каталога /files на host1.com в каталог /files на /host2.com. Система предложит вам ввести пароль для пользователей user1 и user2 до завершения операции.
Копирование больших файлов с помощью SCP
Если вы копируете большие файлы, запустите команду в терминальном мультиплексоре, например tmux .
Если операция прервана, мультиплексор позволит вам возобновить копирование без необходимости начинать заново.
Вы можете проверить, установлен ли в вашей системе tmux , выполнив в терминале следующее:
Рекомендации по использованию SCP
Команда scp не проверяет место назначения перед записью. Любые файлы в месте назначения с тем же именем будут перезаписаны без уведомления.
Вам будет предложено ввести пароль, когда вы нажмете Enter.
Используйте пароль пользователя в удаленной системе.
Управление разрешениями
В исходной системе вам потребуется учетная запись с доступом для чтения к файлам, которые вы хотите скопировать.
В системе назначения вам потребуется учетная запись с правом записи в каталог, в котором будут сохранены файлы. Если вы столкнетесь с ошибками при копировании, вы можете попробовать учетную запись пользователя root для устранения неполадок с разрешениями.
Параметры команды SCP
scp [options] username1@source_host:/location1/file1 username2@destination_host:/location2/file2
Вот некоторые общие параметры команды scp:
- –P — Указать порт SSH сервера
- –p — сохранить метку времени для изменения и доступа (обратите внимание на строчные буквы)
- –q — тихий режим, без отображения прогресса или сообщений (все равно будут отображаться ошибки)
- –C — Сжимать данные во время передачи
- –r — Рекурсивно — включать подкаталоги и их содержимое
Раздел, следующий сразу за параметрами, — это источник (путь) файла, который вы хотите скопировать. Вы можете скопировать из своей системы в удаленную или наоборот.
В следующем разделе указывается место, куда копируется файл. Например:
scp user@local_system:/home/user/test.txt admin@remote_system:/home/user
Это скопирует документ test.txt из пользовательского каталога в локальной системе и поместит копию в каталог учетной записи администратора в удаленной системе.
Другой пример SCP — чтобы скопировать файл с удаленного хоста на локальный:
scp user@from_host:file.txt /local/directory/
Итоги
В этом руководстве вы узнали, что такое команда scp и как ее использовать для защиты передачи файлов.
Копирование файлов по ssh. Команда 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 выполните в терминале: