
Я хочу перенести файл с сервера UNIX на сервер Windows 2003, поэтому я загрузил его copssh
на сервер Windows, а openssh
на сервере UNIX он уже установлен.
Когда я выполняю следующую команду (на сервере UNIX):
scp -r /file_in_unix/ user@windows_hostname:\c:\\\
Появится следующий вывод (на экране сервера UNIX):
100% |***************************************************************| 562 00:00
Однако, когда я иду смотреть файл на C
диске на сервере Windows, я ничего не нахожу. Почему файл не отображается?
решение1
Путь назначения выглядит неправильным — для большинства оболочек Unix обратная косая черта является экранирующим символом, а не маркером пути, поэтому я предполагаю, что файл попал в домашний каталог пользователя SSH со странным именем.
IIRC copssh основан на cygwin, поэтому вам, вероятно, нужно было запустить:
scp -r /file_in_unix/ user@windows_hostname:/cygdrive/c/
Альтернативой копированию на службу SSH на компьютере с Windows является использование графического клиента, напримерWinSCPна компьютере с Windows, чтобы войти в машину с Unix и загрузить файлы таким образом — хотя это не подходит, если вы пытаетесь автоматизировать процесс.
Если у вас есть привилегированный доступ на машине unix (т. е. вы являетесь или можете стать пользователем root через sudo или что-то подобное) и у вас установлена соответствующая поддержка, вы можете просто скопировать файлы на общий ресурс Windows. Вы не говорите, какой Unix вы используете. Для Ubuntu и подобных систем проверка наличия поддержки и ее установка, если ее нет, может быть выполнена с помощью sudo aptitude install smbfs
, вы можете смонтировать общий ресурс Windwos с помощью чего-то вроде sudo mount -tcifs //11.22.33.44//sharename /mnt/tmp -ousername=WindowsUserName
(где 11.22.33.44 — это IP-адрес машины Windows, в зависимости от настроек вашей сети вы можете ссылаться на машину по имени, а не по адресу). После этого вы можете просто использовать основные инструменты управления файлами ( cp
, mv
, ...) для взаимодействия с этим общим ресурсом Windows и вызвать , umount /mnt/tmp
когда закончите. Возможно, вам захочется выбрать более осмысленное имя точки монтирования, чем /mnt/tmp. Конечно, вы можете оставить общий ресурс смонтированным, если передача данных должна быть автоматизирована/запланирована. Этот метод предполагает, что машина Unix может видеть общие файловые ресурсы машины Windows через любые межсетевые экраны, которые могут существовать между ними.
решение2
Вы также можете сделать это наоборот и вытащить файлы со стороны Windows вместо того, чтобы выталкивать их со стороны Unix. Посмотрите на такие инструменты, какWinSCPкоторый является графическим инструментом для передачи файлов SCP, предоставляя вам выбор между видом и поведением Windows Explorer или Norton Commander, оба из которых должны быть интуитивно понятны вам. После входа в систему вы можете перейти к интересующим файлам "способом Windows" и перетащить их туда, куда вам нужно.
решение3
ИспользоватьWinSCPИнструмент. Работает как по волшебству.
решение4
Почему бы не установить Samba на Unix-бокс? Тогда вы сможете сопоставлять диски между двумя системами. В качестве альтернативы я бы использовал psftp (из пакета putty) вместо командной строки scp, поскольку вы с ней не знакомы и, по-видимому, вам не нужно писать скрипт.