Scp имена с пробелами

Обновлено: 05.07.2024

Андрей Тр. aka RH » 24 июл 2008, 19:04

Понадобилось скопировать с одного сервера ( OES SLES9 ) на другой ( OES2 SLES10 ) файл, в пути к которому в именах каталогов есть пробелы. Файл, кстати, на томе NSS. Возникла мысль воспользоваться scp ( копирование по ssh ) - проблема в том, что при указании пути выдает ошибку "нету такого файла", причем три раза ( по числу подстрок, разделенных двумя имеющимися пробелами ). При этом файл из каталога, где пробелов нет, копирует нормально !

Пробовал : искейпы типа путь\ с\ пробелом, и в кавычках "путь с пробелом", и так "путь\ с\ пробелом" ( и с ' вместо " тоже ) - все равно хрен. Ну и где щастье искать ?

Нужно разрешить запускать программу членам группы 'Domain Users', то есть название группы содержит пробел. Как её правильно вписать в sudoers? Я какие-то неправильные маны читал, или там действительно не сказано?



может быть экранировать Domain\ Users


или вот так: Domain\040Users


создателей LDAP, кстати нужно четвертовать


>создателей LDAP, кстати нужно четвертовать

LDAP не всегда тривиален, но таки лучше чем ничего. Я бы скорее подтолкнул создателей sudo, shadow, PAM, NSS и прочего к повышению качества работы GNU/Linux с пользователями и группами с пробелами, спец.символами и языками с нелатинской письменностью.

А я хочу scp it к текущему каталогу . . Как я могу это сделать?

после некоторого исследования, я нашел эти два варианта:

scp 'user@remote_host:"/home/user/path with spaces/filename with spaces.ext"' .

scp 'user@remote_host:/home/user/path\ with\ spaces/filename\ with\ spaces.ext' .

Я надеюсь, что это поможет вам тоже!

у вас есть два варианта.

Вариант первый: введите пробелы, как "\ ". Example; /home/matthew/File\ With\ Spaces.file .

Вариант второй: введите путь в Апостроф одинарные кавычки, вот так: '/home/matthew/File With Spaces.file' .

Если вы используете клавишу таb ( Tab ) для автоматического завершения имени файла, он будет вставлять "\ " автоматически, однако вы должны использовать аутентификацию с открытым ключом для его работы на удаленном хосте.


Команда scp принимает на вход различные опции (см. примеры ниже), а также файл или директорию, которую необходимо скопировать (аргумент что_копируем ). Последним аргументом указывается путь назначения, в который будет произведено копирование (аргумент куда_копируем ).

Аргументы что_копируем и куда_копируем могут быть, как локальными путями, так и удаленными. То есть можно копировать файлы с удаленного компьютера на локальный и наоборот. Можно копировать файлы с удаленного компьютера на другой удаленный компьютер.

что_копируем и куда_копируем имеют следующий синтаксис:

имя_пользователя @ IP_адрес : путь до файла или директории

имя_пользователя — это имя пользователя для подключения по ssh.
IP_адрес — IP адрес компьютера (хоста) на который или с которого будет копирование.

Копирование директории

Скопируем с нашего локального компьютера директорию

/mydir на удаленный компьютер в директорию /home/pingvin . Используется опция -r .

Сохранение атрибутов файла

Чтобы результирующий файл получил те же атрибуты что и исходный файл, используется опция -p (не путать с опцией -P для указания порта). При использовании опции -p сохраняются права доступа к файлу, владелец файла, временные метки и так далее.

Копирование файла с удаленного компьютера на локальный

Удаленный→Локальный

Теперь наоборот. Скопируем файл с удаленного компьютера в нашу текущую директорию.

Копирование со сжатием данных (ускорение)

Скорость копирования файлов можно увеличить. Для этого используется опция -C . Данная опция выполняет сжатие файлов при копировании, таким образом по сети передается меньшее количество данных. Сжатие выполняется только при передаче данных, то есть результирующий файл будет в первоначальном виде.

Пример копирования файла myfile.dat с включенным сжатием.

Если в пути есть пробелы

Если путь до удаленного файла/директории содержит пробелы, то при использовании команды scp необходимо этот путь заключить и в одинарные и двойные кавычки:

Это связано с тем, что одни кавычки используются при разборе пути на локальной стороне, а вторые на удаленной.

Копирование локального файла

Локальный→Удаленный

Рассмотрим простой пример. Скопируем по ssh локальный файл myfile.dat на компьютер с IP адресом 192.168.1.74 в директорию /home/pingvin .

Указываем порт

Выполним тоже самое, но укажем еще и порт для подключения по ssh (используем опцию -P ). Обратите внимание, что опция для указания порта это прописная буква P !

Читайте также: