Копирование по сети в Linux

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

bogdan
новенький
Сообщения: 40
Зарегистрирован: 20.05.2015 20:32:49

Копирование по сети в Linux

Сообщение bogdan »

Подскажите пожалуйста! Как под Lubuntu 15.04 скопировать файл по сети из общей папки на компьютере под Windows?
Спасибо!
Zhbr
новенький
Сообщения: 44
Зарегистрирован: 31.01.2014 02:34:21

Сообщение Zhbr »

Уточни тебе надо компонент подсказать для лазаруса или ссылку на samba отправить?)) Честно несовсем понятно, вдруг темой ошибся)
kosteek
постоялец
Сообщения: 203
Зарегистрирован: 24.07.2008 14:57:09
Откуда: Украина, г.Славянск

Сообщение kosteek »

За монтирование каталогов отвечает ОСь. Поэтому нужно послать команду монтирования системе.
bogdan какая конкретная задача у тебя?
bogdan
новенький
Сообщения: 40
Зарегистрирован: 20.05.2015 20:32:49

Сообщение bogdan »

ну через функцию CopeFile можно как-то скопировать?
kosteek
постоялец
Сообщения: 203
Зарегистрирован: 24.07.2008 14:57:09
Откуда: Украина, г.Славянск

Сообщение kosteek »

Так ты и не сказал какая у тебя конкретная задача. Значит и не получишь правильный ответ.
bogdan писал(а):ну через функцию CopeFile можно как-то скопировать?

Можно.
bogdan
новенький
Сообщения: 40
Зарегистрирован: 20.05.2015 20:32:49

Сообщение bogdan »

а как, можно пример в студию? )))
kosteek
постоялец
Сообщения: 203
Зарегистрирован: 24.07.2008 14:57:09
Откуда: Украина, г.Славянск

Сообщение kosteek »

bogdan
новенький
Сообщения: 40
Зарегистрирован: 20.05.2015 20:32:49

Сообщение bogdan »

у меня почету-то CopyFile не срабатывает, а на локальной папке все отрабатывает на ура

Код: Выделить всё

  lcDirFrom := '//192.168.1.91/VesyFurshet_Import/';

  CopyFile(lcDirFrom + '102061.png', 'images/102061.png');
kosteek
постоялец
Сообщения: 203
Зарегистрирован: 24.07.2008 14:57:09
Откуда: Украина, г.Славянск

Сообщение kosteek »

И как тебя называть после этого поста, наверно Вася. Читай мой первый ответ в этой теме, пока тебя не осенит. Ответов по этой теме от меня не жди.
bogdan
новенький
Сообщения: 40
Зарегистрирован: 20.05.2015 20:32:49

Сообщение bogdan »

меня интересует способ именно без монтирования диска, с таким же успехом задачу можно реализовать формированием скрипта и вызовом его из программы.
Если это невозможно можно так и сказать, а не Васять здесь
Аватара пользователя
Лекс Айрин
долгожитель
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград
Контактная информация:

Сообщение Лекс Айрин »

bogdan, а если диск предварительно не подмонтирован, то как ты сможешь на него что-то скопировать?
PapaNT
постоялец
Сообщения: 167
Зарегистрирован: 11.09.2009 12:06:46
Откуда: Москва

Сообщение PapaNT »

А через имя сетевого файла класса smb://Server_Name/ShareName/FileName не прокатит без монтирования разве не прокатит?

P.S.: С авторизованным доступом там малость сложнее будет строчка, но пока нет на чем попробовать...
wavebvg
постоялец
Сообщения: 355
Зарегистрирован: 28.02.2008 03:57:35

Сообщение wavebvg »

PapaNT писал(а):А через имя сетевого файла класса smb://Server_Name/ShareName/FileName не прокатит без монтирования разве не прокатит?

P.S.: С авторизованным доступом там малость сложнее будет строчка, но пока нет на чем попробовать...


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

Вообще, как правильно сказали выше, проще самому смонтировать (через тот же fuse и просто рассчитать путь до файлов в файловой системе, к примеру тут на Ubuntu 14.04 /run/user/1000/gvfs/ или ~/.gvfs/)
v-t-l
энтузиаст
Сообщения: 744
Зарегистрирован: 13.05.2007 16:27:22
Откуда: Belarus

Сообщение v-t-l »

Код: Выделить всё

SysUtils.ExecuteProcess('/usr/bin/gvfs-mount', UTF8ToSys('"smb://ems4/temp6/"'), []);
SysUtils.ExecuteProcess('/usr/bin/gvfs-copy', UTF8ToSys('"smb://ems4/temp6/2015-10-02 09-38-08 Скриншот экрана.png" "2015-10-02 09-38-08 Скриншот экрана.png"'), []);

или для CURL >= 7.40

Код: Выделить всё

SysUtils.ExecuteProcess('/usr/bin/curl', UTF8ToSys('"smb://ems4/temp6/2015-10-02 09-38-08 Скриншот экрана.png" -o "2015-10-02 09-38-08 Скриншот экрана.png"'), []);


Добавлено спустя 1 минуту 21 секунду:
http://wiki.freepascal.org/Executing_External_Programs
mig-31
постоялец
Сообщения: 224
Зарегистрирован: 14.07.2011 13:46:48

Сообщение mig-31 »

v-t-l прав. Но так или иначе в системе должны стоять клиентские компоненты самба и тебе надо будет запускать сторонние программы.
Ответить