Scp имена с пробелами
Андрей Тр. 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 !
Читайте также: