- SCP Команда Linux для Удалённого Копирования Файлов
- Синтаксис Примера SCP Команды
- SCP Команда: На Что Обратить Внимание
- SCP Команда и Копирование Файлов
- Локальный Файл в Удалённое Местоположение
- Удалённый Файл на Локальную Машину
- Удалённый Файл в Другое Удалённое Местоположение
- Итоги
- Копирование файлов по ssh. Команда scp
- Синтаксис команды scp
- Копирование локального файла
- Локальный→Удаленный
- Указываем порт
- Копирование файла с удаленного компьютера на локальный
- Удаленный→Локальный
- Копирование директории
- Копирование со сжатием данных (ускорение)
- Сохранение атрибутов файла
- Если в пути есть пробелы
- scp без замены существующих файлов в месте назначения
- scp без замены существующих файлов в месте назначения
- 7 ответов
SCP Команда Linux для Удалённого Копирования Файлов
Безопасная передача файлов является приоритетом номер один для тех, кто используют VPS. SCP команда Linux позволяет выполнить безопасное копирование и перенос ваших файлов. И в этой статье мы расскажем, как это сделать.
Что такое команда SCP? Основанная на протоколе удаленного копирования (RCP) Berkeley Software Distribution (BSD), SCP (Secure Copy) представляет собой сетевой протокол передачи файлов, который позволяет легко и безопасно передавать/копировать файлы между удалённым и локальным хостом или двумя удалёнными местоположениями.
Full Stack-разработчики часто применяют эту команду Linux через её функции аутентификации и шифрования, а также отсутствие необходимости использовать сторонние хостинговые сервисы, такие как Github. SCP — это простой способ защитить данные от перехватчиков и сохранить их конфиденциальность.
По сути, SCP представляет собой смесь RCP и SSH (Secure Shell). Первый протокол обеспечивает выполнение операций копирования, а второй шифрует информацию и проверяет подлинность удалённых систем.
В отличие от Rsync, всё, что вам нужно для успешного использования командной строки SCP, это имя пользователя и пароль или секретная фраза для систем, участвующих в передаче. Это упрощает процесс, так как вам не нужно входить ни в одну из них.
Прокачайте ваш проект, воспользовавшись скидками на VPS-хостинг в Hostinger! Большой выбор планов, как для учебных, так и для крупных коммерческих проектов.
Синтаксис Примера SCP Команды
Пример базовой команды SCP выглядит следующим образом:
Слишком сложно? Давайте разбираться.
В этом примере мы выполняем передачу между двумя серверами VPS.
- [other options] — это модификаторы, которые вы можете добавить к команде SCP. Мы рассмотрим самые популярные из них немного позже.
- [source username@IP] — имя пользователя и IP-адрес компьютера, на котором находится нужный файл. На практике это будет выглядеть как-то так — root@123.123.123.12.
- :/ сообщает команде SCP, что вы собираетесь ввести исходный каталог.
- [directory and file name] — это место, где находится файл, и его название. На деле это выглядит так: /users/Olha/Desktop/SCP.png.
- [destination username@IP] — это имя пользователя и IP-адрес компьютера назначения.
- [destination directory] — каталог назначения, в который будет сохранён файл.
В реальном жизни SCP команда будет выглядеть так:
Видите, это довольно просто. Если вы копируете на локальный компьютер или с локального компьютера, вам не понадобится IP-адрес, место назначения или исходный путь, например, /desktop/folder_name.
Давайте поговорим о других опциях модификации этой утилиты. Существует 20 распространённых вариантов, которые можно использовать как в односимвольной форме (-o), так и в их описательном эквиваленте (–option). Вот список популярных модификаторов команды SCP в Linux:
- –P (port) позволяет указать нестандартный порт (порт по умолчанию — 22).
- –с (cipher) даёт возможность указать алгоритм шифрования, который будет использовать клиент. Некоторые из значений, которые вы можете использовать: “aes256-ctr”, “aes256-cbc”, “blowfish-cbc”, “arcfour”, “arcfour128”, “arcfour256”, “cast128-cbc”, “aes128-ctr”, “aes128-cbc”, “aes192-ctr”, “aes192-cbc” и “3des-cbc”. Параметром по умолчанию в конфигурации оболочки является “AnyStdCipher”.
- –q выполнит операцию в тихом режиме, это означает, что отображаться будут только критические ошибки.
- –r для рекурсивного копирования, которое будет включать все подкаталоги.
- -4 или -6 , если вы хотите выбрать используемую версию протокола: IPv4 или IPv6. Вы также можете более подробно настроить требования к IP-адресу с помощью ключевого слова address-family.
- –p сохранит начальное время изменения и атрибуты файла.
- –u удалит исходный файл после завершения передачи.
- –c включит сжатие данных во время операции передачи.
SCP Команда: На Что Обратить Внимание
Поскольку SCP использует шифрование SSH, для копирования файла вам потребуется пароль ssh. Кроме того, необходимо иметь право на чтение на машине, с которой вы собираетесь копировать, и право на запись на машине(ах), куда вы будете копировать.
Для аутентификации и настройки соединения вам нужно будет создать пару ключей ssh с помощью следующей команды:
Вы копируете этот ключ в удалённую систему, используя:
Открытый ключ будет скопирован сразу после аутентификации на удалённом(ых) компьютере(ах), после чего вы сможете выполнить перенос.
Если вы не помните пароль(и) root для какой-либо из систем, вы можете попросить клиента ssh выбрать файл, из которого закрытый идентификационный ключ для подтверждения RSA будет считываться автоматически.
Для протокола версии 2 дефолтный путь идентификации ключа хоста —
/.ssh/id_dsa , а для версии протокола 1 —
/.ssh/id_rsa. Затем нужно выяснить, где хранятся резервные копии закрытых и открытых ключей, чтобы вы могли применить команду ssh для их автоматического использования.
Для пути /back-up/home/jack/.ssh команда выглядит следующим образом:
Совет : значением по умолчанию этого параметра является –overwrite [yes] , поэтому, если вы не укажете опцию –overwrite no или –overwrite ask в своей команде scp, операция перезапишет файлы с одинаковыми названиями и местоположениями без каких-либо предупреждений.
Если вы копируете большие файлы, мы рекомендуем использовать сеанс tmux или запустить команду на другом экране. Кроме того, вы также должны использовать опцию -v. Это заставит scp отображать любые отладочные соединения, проблемы с аутентификацией или конфигурацией.
SCP Команда и Копирование Файлов
Самое замечательное в SCP то, что она даёт вам возможность передавать файлы между двумя хостами или между хостом и локальной машиной. Давайте посмотрим, как используется эта команда для каждого типа передачи.
Локальный Файл в Удалённое Местоположение
Мы скопируем локальный файл scp.zip на пользователя удалённого компьютера с названием root . За именем пользователя следует IP-адрес сервера.
Если у вас не настроено автоматическое подтверждение клиента ssh, вам будет предложено ввести пароль от пользователя удалённого компьютера, после чего вы увидите индикатор прогресса. Это будет выглядеть примерно так:
Но допустим, что удалённый компьютер настроен на прослушивание SSH-соединений через порт, отличный от порта по умолчанию 22. В этом случае вы должны указать этот порт с помощью параметра.
Если вы также хотите изменить имя файла во время копирования, то ваша команда будет выглядеть следующим образом (если ваш порт не является портом по умолчанию, просто добавьте –P и номер порта):
Если вы хотите скопировать каталог, содержащий файлы и/или подкаталоги, используйте параметр –r , описанный выше.
Удалённый Файл на Локальную Машину
В этом процессе источник и цель команды меняются местами, что должно отразиться на вашем синтаксисе. В этот раз мы пытаемся скопировать файл scp.zip с того же удалённого хоста на наш локальный компьютер:
Опять же, это должно вызвать тот же вывод входа в систему через SSH, где вы должны ввести пароль, если аутентификация не была отключена привилегиями sudo или вы не заставили ssh-клиент использовать закрытый ключ на вашем компьютере.
Удалённый Файл в Другое Удалённое Местоположение
Чтобы скопировать файлы с одного удалённого хоста на другой, вам нужно будет ввести пароли для обеих учётных записей после запуска этой команды в терминале.
Приведённая выше команда копирует исходный файл /writing/article/scp.zip с одного хоста на другой. Чтобы скопировать папки, просто добавьте параметр -r и укажите путь к папке, а не файл внутри неё, как мы делали раньше.
При нормальных обстоятельствах файл копируется непосредственно с одного удалённого хоста на другой. Однако, если вы хотите перенаправить операцию через ваш компьютер, вы можете добавить опцию -3 :
Итоги
В этой статье мы узнали, что такое SCP команда в Linux и, как с её помощью передавать файлы между удалёнными и локальными узлами. Это очень полезно, когда вы работаете с несколькими серверами. Протокол защищённого копирования, или SCP облегчает копирование информации с одного удалённого хоста на другой, поскольку вам не приходится входить в систему.
Кроме того, этот метод удалённой передачи файлов шифрует ваши данные с помощью безопасной оболочки (SSH), что обеспечивает конфиденциальность передаваемой вами информации.
Ольга уже около пяти лет работает менеджером в сфере IT. Написание технических заданий и инструкций — одна из её главных обязанностей. Её хобби — узнавать что-то новое и создавать интересные и полезные статьи о современных технологиях, веб-разработке, языках программирования и многом другом.
Источник
Копирование файлов по ssh. Команда scp
Для копирования файлов по ssh между компьютерами под управлением Linux применяется команда scp . Рассмотрим, как можно копировать файлы с одного компьютера на другой по ssh, используя команду scp .
Синтаксис команды scp
Синтаксис команды scp следующий:
Команда scp принимает на вход различные опции (см. примеры ниже), а также файл или директорию, которую необходимо скопировать (аргумент что_копируем ). Последним аргументом указывается путь назначения, в который будет произведено копирование (аргумент куда_копируем ).
Аргументы что_копируем и куда_копируем могут быть, как локальными путями, так и удаленными. То есть можно копировать файлы с удаленного компьютера на локальный и наоборот. Можно копировать файлы с удаленного компьютера на другой удаленный компьютер.
что_копируем и куда_копируем имеют следующий синтаксис:
имя_пользователя — это имя пользователя для подключения по ssh.
IP_адрес — IP адрес компьютера (хоста) на который или с которого будет копирование.
Копирование локального файла
Локальный→Удаленный
Рассмотрим простой пример. Скопируем по ssh локальный файл myfile.dat на компьютер с IP адресом 192.168.1.74 в директорию /home/pingvin .
Указываем порт
Выполним тоже самое, но укажем еще и порт для подключения по ssh (используем опцию -P ). Обратите внимание, что опция для указания порта это прописная буква P !
Копирование файла с удаленного компьютера на локальный
Удаленный→Локальный
Теперь наоборот. Скопируем файл с удаленного компьютера в нашу текущую директорию.
Копирование директории
Скопируем с нашего локального компьютера директорию
/mydir на удаленный компьютер в директорию /home/pingvin . Используется опция -r .
Копирование со сжатием данных (ускорение)
Скорость копирования файлов можно увеличить. Для этого используется опция -C . Данная опция выполняет сжатие файлов при копировании, таким образом по сети передается меньшее количество данных. Сжатие выполняется только при передаче данных, то есть результирующий файл будет в первоначальном виде.
Пример копирования файла myfile.dat с включенным сжатием.
Сохранение атрибутов файла
Чтобы результирующий файл получил те же атрибуты что и исходный файл, используется опция -p (не путать с опцией -P для указания порта). При использовании опции -p сохраняются права доступа к файлу, владелец файла, временные метки и так далее.
Если в пути есть пробелы
Если путь до удаленного файла/директории содержит пробелы, то при использовании команды scp необходимо этот путь заключить и в одинарные и двойные кавычки:
Это связано с тем, что одни кавычки используются при разборе пути на локальной стороне, а вторые на удаленной.
Для получения полной справки по команде scp выполните в терминале:
Источник
scp без замены существующих файлов в месте назначения
Как скопировать весь каталог в одноименный каталог без замены содержимого в целевом каталоге? (вместо этого я хотел бы добавить к содержимому папки назначения)
Используйте rsync и передайте, -u если вы хотите обновить только файлы, которые новее в исходном каталоге, или —ignore-existing пропустить все файлы, которые уже существуют в месте назначения.
(Обратите внимание / на исходную сторону: без этого rsync создастся /remote/directory/directory .)
scp перезапишет файлы, если у вас есть права на запись в них.
Другими словами: Вы можете scp эффективно пропустить указанные файлы, временно удалив разрешения на запись для них (если вы являетесь владельцем файлов, то есть).
Вы можете копировать только новые файлы по дате. использование find
Если вы можете сделать содержимое файла назначения доступным только для чтения:
перед запуском scp (будет пожаловаться и пропустить существующие файлы).
И измените их обратно потом ( chmod +w чтобы получить значение на основе масок). Если не все файлы имеют разрешение на запись в соответствии с вашей маской, вам нужно каким-то образом хранить разрешения, чтобы их можно было восстановить.
(Ответ Жиля перезаписывает существующие файлы, если локально они более новые, я потерял ценные данные таким образом. Не понимаю, почему этот неправильный и вредный ответ имеет так много голосов).
У меня была похожая задача, в моем случае я не мог использовать rsync , csync или FUSE , потому что мое хранилище имеет только SFTP. rsync Не удалось изменить дату и время для файла, некоторые другие утилиты (например csync ) показывали мне другие ошибки: « Невозможно создать временный файл Обнаружен перекос часов ».
Если у вас есть доступ к хранилищу-серверу — просто установите openssh-server или запустите здесь rsync как демон.
В моем случае — я не мог этого сделать, и решение было: lftp . lftp Использование для синхронизации приведено ниже:
Источник
scp без замены существующих файлов в месте назначения
Как скопировать весь каталог в каталог с таким же именем без замены содержимого в каталоге назначения? (вместо этого я хотел бы добавить содержимое папки назначения)
7 ответов
Используйте rsync и передайте -u , если вы хотите обновлять только файлы, которые являются более новыми в исходном каталоге, или —ignore-existing code>, чтобы пропустить все файлы, которые уже существуют в пункте назначения.
(Обратите внимание на / на стороне источника: без него rsync создаст /remote/directory/directory .)
scp перезапишет файлы, если у вас есть права на запись.
Другими словами: Вы можете сделать scp эффективно пропустить указанные файлы, временно удалив права на запись на них (если вы являетесь владельцем файлов, то есть).
Вы можете копировать только новые файлы по дате. Используйте find
Если вы можете сделать содержимое целевого файла доступным только для чтения:
перед запуском scp (он будет жаловаться и пропускать существующие файлы). И измените их назад ( chmod +w , чтобы получить значение на основе umask). Если файлы не все имеют разрешение на запись в соответствии с вашим umask, вам как-то придется хранить разрешения, чтобы вы могли их восстановить.
(Ответ Гилла перезаписывает существующие файлы, если локально они новее, я потерял ценные данные таким образом. Не понимаю, почему этот неправильный и вредный ответ имеет так много голосов).
У меня была аналогичная задача, в моем случае я не мог использовать rsync , csync или FUSE, потому что в моем хранилище есть только SFTP. rsync не удалось изменить дату и время для файла, некоторые другие утилиты (например, csync ) показали мне другие ошибки: « Не удалось создать временный файл. ».
Если у вас есть доступ к серверу хранения — просто установите openssh-server или запустите rsync в качестве демона здесь.
В моем случае — я не мог этого сделать, и решение было: lftp . lftp используется для синхронизации:
/src/folder — это папка на моем ПК, /rem/folder — это sftp://sft.domain.tld/rem/folder .
Вы можете найти справочные страницы по ссылке: http://lftp.yar.ru/lftp -man.html
Чтобы скопировать целую кучу файлов, быстрее их выполнить. Используя -k, вы также запрещаете tar перезаписи файлов при распаковке в целевой системе.
scp перезаписывает файлы, и нет никакого переключателя, чтобы остановить его, но вы можете скопировать что-то в этом роде, сделать scp и затем скопировать существующие файлы обратно. Примеры:
Скопируйте все существующие файлы с помощью
Скопировать все, используя scp
Скопируйте исходные файлы поверх всего, что написано в scp:
Источник