Как скопировать файл из Linux на Windows Server, используя C - PullRequest
1 голос
/ 09 октября 2008

Мне нужно создать программу на C, которая будет работать на сервере Linux. Он будет получать информацию из базы данных Oracle, создавать локальный файл и затем копировать этот файл на сервер Windows. Я знаю, как создать локальный файл на сервере Linux. Но как скопировать его на сервер Windows из C?

Ответы [ 7 ]

8 голосов
/ 09 октября 2008

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

Самый простой сценарий будет с двумя машинами в одной локальной сети и без особой защиты. В этом случае возможное решение будет:

  • Samba : Предоставить общий доступ к каталогу на машине Win, установить / настроить Samba на компьютере с Linux. Программа C увидит общий диск как локальный диск по определенному пути (например, /win/share).

  • NFS : В качестве альтернативы вы можете экспортировать каталог в Linux с помощью NFS и установить / настроить продукт NFS на компьютере Win. Я вижу это как второй вариант, если Samba не может быть использована по какой-либо причине (например, безопасность / аутентификация).

  • ftp : вам понадобится ftp-сервер на компьютере с Windows. Также будет сложнее скопировать файл через программу на Си. Если я не ошибаюсь, ftp-клиент в Linux является интерактивным, и его нельзя использовать в скрипте (или в другой программе), но вы должны проверить.

  • http : вам понадобится http-сервер на компьютере с Windows и страница, которая позволит загружать (IIS плюс некоторая страница asp, должно хватить) и использовать libcurl для диалога с ним.

Более сложный сценарий, когда безопасность представляет собой проблему, потребует использования scp или sftp over и SSL-соединения. Также libcurl с https может обеспечить достаточно хорошее решение.

Мой совет: сначала попробуйте Samba и посмотрите, удовлетворяет ли он вашим потребностям, все остальные варианты потребуют от вас как программиста дополнительной работы.

8 голосов
/ 09 октября 2008

Сначала смонтируйте Windows Share, а затем создайте файл в смонтированном каталоге.

3 голосов
/ 09 октября 2008

Возможно, вы могли бы просто использовать smbclient? Нет необходимости устанавливать какие-либо серверы или что-либо еще, просто есть какой-то общий диск на сервере.

smbclient //myserver/my_directory <password> -U [domain/]<my_user>

Тогда вы можете просто «положить» и «получить» любые файлы, которые вам нравятся, между текущим каталогом на компьютере с Linux и Windows Server.

put my_file_to_copy.dat

Вот и все.

1 голос
/ 11 октября 2008

Да - просто смонтируйте окно Windows, используя любую сетевую файловую систему, которую вы хотите (например, Samba), и скопируйте файл в этот каталог, используя обычные примитивы ввода-вывода.

Mark

0 голосов
/ 09 октября 2008

Как насчет использования SMTP и отправки по почте?

0 голосов
/ 09 октября 2008

Windows-машина должна предоставить способ сначала принять это поведение (на ум приходит FTP). Вы можете разработать приложение для запуска на Windows-машине, чтобы принять файл, но проще использовать одно из уже разработанных.

filezilla является примером.

Что касается вопроса о том, как загрузить файл, то любой ftp-клиент сделает это.

0 голосов
/ 09 октября 2008

Или используйте FTP. Существует множество библиотек FTP, которые вы можете добавить в свой код Linux C.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...