Открыть файл в сети в linux

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

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

jsa
постоялец
Сообщения: 295
Зарегистрирован: 28.11.2017 12:46:04

Открыть файл в сети в linux

Сообщение jsa »

Пишу утилиту, работать должна как в windows так и в ubuntu/mint
Работает с базой одной ПО.
Клиентские программы из локального файла options.ini считывают имя файла параметров, файл сетевой \\192.168.100.1\base\params.ini
и из этого файла считывает уже параметры подключения к sql серверу.
В win нет проблем использовать TIniFile.Create('\\192.168.100.1\base\params.ini');
В linux понятно, что можно все нужные параметры прописать в один файл и читать его или скопировать params.ini на комп и читать его локально.
Но вот как быть в случае если params.ini должен лежать в сети?
Не нашел как можно в Lazarus на линуксе подключиться к сетевой папке и считать файл, не монтируя эту папку, или не скачивая файл.
Вообще существует такой способ?
Последний раз редактировалось jsa 02.05.2019 11:48:36, всего редактировалось 1 раз.
Аватара пользователя
Снег Север
долгожитель
Сообщения: 3067
Зарегистрирован: 27.11.2007 15:14:47
Контактная информация:

Сообщение Снег Север »

jsa, вы правда считаете, что "прочитать файл" с сетевого ресурса в принципе возможно, не скачав его содержимое, хотя бы, как временный файл? :D
Так почему бы его не скачать явно и не мучиться?
jsa
постоялец
Сообщения: 295
Зарегистрирован: 28.11.2017 12:46:04

Сообщение jsa »

Снег Север писал(а):jsa, вы правда считаете, что "прочитать файл" с сетевого ресурса в принципе возможно, не скачав его содержимое, хотя бы, как временный файл? :D

Нет, я так не считаю, я это знаю. Вопрос сформулирован с ехидцей и с подвохом. Естественно нужно скачать его содержимое. А вот скачивание как временного файла не нужно.
Снег Север писал(а):Так почему бы его не скачать явно и не мучиться?

Это не мучение, это вопрос о возможности, сделать это в Lazarus под linux
Последний раз редактировалось jsa 02.05.2019 11:36:21, всего редактировалось 1 раз.
Аватара пользователя
Снег Север
долгожитель
Сообщения: 3067
Зарегистрирован: 27.11.2007 15:14:47
Контактная информация:

Сообщение Снег Север »

jsa писал(а):Нет, я так не считаю, я это знаю

И как вы это себе представляете? Святым духом байты из файла переносятся на ваш комп, без скачивания? :D
jsa
постоялец
Сообщения: 295
Зарегистрирован: 28.11.2017 12:46:04

Сообщение jsa »

Снег Север писал(а):И как вы это себе представляете? Святым духом байты из файла переносятся на ваш комп, без скачивания? :D


Я себе это представляю примерно так как это делает например VLC когда запускаешь его кликом по видео файлу открытому в caja по сетевому пути smb://mediaserv/films/....mkv
Тоже самое с любым другим файлом.

Я то различаю понятия "скачав его содержимое" и "хотя бы как временный файл", а вы?
Или вЫ считаете что VLC кэширует куда-то временный файл размером 15Гб, так что это просто не заметно происходит?
А-а-а-а, наверное в память или swap кэширует полностью файл чтобы получить в нему доступ.

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

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

jsa, скачивание и временное скачивание ничем не отличаются. Все равно надо создавать соединение, получать доступ и закачивать файл. Разве что после этого он или удаляется, или нет. Поэтому никто не будет создавать отдельный механизм для скачивания файла без открытия соединения. Максимум, если только сервер будет плеваться специальным пакетом с настройками.
Да, VLC именно что скачивает файл частично и своппирует его на стороне клиента. При этом он удаляет уже проигранные части файла. Более того, у него даже отображается какая часть файла уже сохранена на диске. В виде бледненькой такой полоски. И если места мало, то он жутко ругается и тормозит. А да, он ещё и не запускает воспроизведение сволочь, пока не создаст кеш, просто не на каждой машине это заметишь.
jsa
постоялец
Сообщения: 295
Зарегистрирован: 28.11.2017 12:46:04

Сообщение jsa »

Лекс Айрин писал(а):VLC именно что скачивает файл частично


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

Еще раз. если мне нужно из файла ini лежащего на сервере взять 2 параметра, то мне не обязательно
1. Скачать файл.
2. открыть/прочитать
3. удалить файл.
Я могу в винде это сделать просто обратившись по сетевому имени.
Вопрос только в том знает ли кто из здешних специалистов как это можно сделать в Лазарусе в линуксе.
То что это в принципе возможно в линуксе, я не хочу обсуждать, этим все пользуются, но этот механизм зарыт в проводнике Nautilus/Caja/Thunar и т.д. и тот путь и та аутентицификация, что отображаются в них не подходят для методов Pascal
Аватара пользователя
Лекс Айрин
долгожитель
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград
Контактная информация:

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

jsa, он просто запрашивает сектора по мере необходимости.
Тебе кажется, что файл не скачивается. Но почти всегда его можно даже найти в темпори папке системы или программы. Исключение может быть сделано только для одноранговой сети, где задержка минимальна. Но не стоит ее распространять на весь интернет, где в любой момент есть шанс событий приводящих к реконфигурации структуры связей.
Для интернета все однозначно скачивай и читай. Если есть возможность, то в режиме потока. Если у тебя есть доступ к серверу, то проще эти параметры передавать в процессе установления связи или запрашивать через скрипт. Но как я понимаю, доступа у тебя нет.
MysticCoder
постоялец
Сообщения: 154
Зарегистрирован: 14.09.2013 00:20:28

Сообщение MysticCoder »

https://searchcode.com/codesearch/view/64390136/

реализовывай свой клиент smb, скачивай хоть в память, хоть на диск. Если хочешь, удаленный файл открыть именно как файл в системе linux, то тут по любому придется либо монтировать, либо на диск сохранять. Как бы /tmp для этого и нужен, чтобы временные файлы там создавать.
olegy123
долгожитель
Сообщения: 1643
Зарегистрирован: 25.02.2016 11:10:20

Сообщение olegy123 »

Почему забыли HTML?
Чем вам не файлокачалка..
Аватара пользователя
Снег Север
долгожитель
Сообщения: 3067
Зарегистрирован: 27.11.2007 15:14:47
Контактная информация:

Сообщение Снег Север »

jsa писал(а):VLC получает доступ к содержимому файла. Скачивает нужный фрагмент, и сам его кэширует.

Тривиальная передача потока байт через сокет. Суть в том, что пофрагментная передача имеет смысл только для файлов в десятки мегабайт и выше. Для текстового ini смысл такой в передаче равен нулю, на все подключения уйдет времени больше, чем на полное скачивание, если у вас интернет не 90-х годов.
Alex2013
долгожитель
Сообщения: 3211
Зарегистрирован: 03.04.2013 11:59:44

Сообщение Alex2013 »

Заранее извиняюсь если покажется, что идея не "в тему" ...
Но на SMB свет клином не сошелся к файлу в сети можно добраться десятками разные способов .
Например через ftp,http ... Вот уж точно проще не придумаешь ! Настроил или сам собрал простейший сервак и читай что хочешь "прямо в память" например с помощью Synapse.

Добавлено спустя 9 минут 44 секунды:
Снег Север писал(а):
jsa писал(а):VLC получает доступ к содержимому файла. Скачивает нужный фрагмент, и сам его кэширует.

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

Очевидно, что дело в не желаний в принципе оставлять файл настроек на локальной машине (что актуально например для обучающих программ с тестированием полученных знаний ) или в возможности настроить все работающие в сети клиенты одним махом без нужды в специальной процедуре синхронизации .
Аватара пользователя
Снег Север
долгожитель
Сообщения: 3067
Зарегистрирован: 27.11.2007 15:14:47
Контактная информация:

Сообщение Снег Север »

Alex2013 писал(а):Очевидно, что дело в не желаний в принципе оставлять файл настроек на локальной машине

Кто мешает читать файл в память? Memorystream существует испокон века...
olegy123
долгожитель
Сообщения: 1643
Зарегистрирован: 25.02.2016 11:10:20

Сообщение olegy123 »

jsa писал(а):Я то различаю понятия "скачав его содержимое" и "хотя бы как временный файл", а вы?
зачем его сохранять?
Загрузили, проверили на истенность и сделали изменения.. И увсе.
jsa
постоялец
Сообщения: 295
Зарегистрирован: 28.11.2017 12:46:04

Сообщение jsa »

olegy123 писал(а):
jsa писал(а):Я то различаю понятия "скачав его содержимое" и "хотя бы как временный файл", а вы?
зачем его сохранять?
Загрузили, проверили на истенность и сделали изменения.. И увсе.

Ваш вопрос точно ко мне? Я то вопрос поставил как открыть файл в сети, не скачивая его перед этим в локальную файловую систему. А вы про что, и почему пишите мне, я не понял.
Ответить