The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Программирование под UNIX (C/C++)
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Перемещение файлов и update, Ищущий ответы (?), 25-Июн-07, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


2. "Перемещение файлов и update"  +/
Сообщение от Ищущий ответы (?), 25-Июн-07, 13:26 
>>Здравствуйте,
>>Помогите написать скрипт для перемещения файлов из директории в другую директорию.
>>А конкретно, есть папка куда постоянно копируются файлы из инета. Их мне
>>нужно перемещать в другую папку. И если файл перемещен, то сделать
>>insert в Oracle (имя файла и путь к нему). Скрипт желателен
>>на shell, perl или С/C++
>>Спасибо.

>Проблемы:
>неизвестно когда запускается скрипт, т.е. если в момент копирования из инета будет
>запущен скрипт, то будет конфликт - скрипт переместит файл в который
>производится запись - будет злой облом. Кто-то должен разрулить эту ситуацию
>т.е. должен быть признак что файл полностью скопирован из инета.

Именно по этой причине я и завел эту тему, т.к.как раз эта проблема меня и интересует.
Есть идеи?

Ответить | Правка | Наверх | Cообщить модератору

3. "Перемещение файлов и update"  +/
Сообщение от NuINu (??), 25-Июн-07, 13:40 
>>>Здравствуйте,
>>>Помогите написать скрипт для перемещения файлов из директории в другую директорию.
>>>А конкретно, есть папка куда постоянно копируются файлы из инета. Их мне
>>>нужно перемещать в другую папку. И если файл перемещен, то сделать
>>>insert в Oracle (имя файла и путь к нему). Скрипт желателен
>>>на shell, perl или С/C++
>>>Спасибо.
>
>>Проблемы:
>>неизвестно когда запускается скрипт, т.е. если в момент копирования из инета будет
>>запущен скрипт, то будет конфликт - скрипт переместит файл в который
>>производится запись - будет злой облом. Кто-то должен разрулить эту ситуацию
>>т.е. должен быть признак что файл полностью скопирован из инета.
>
>Именно по этой причине я и завел эту тему, т.к.как раз эта
>проблема меня и интересует.
>Есть идеи?
программа копирующая файл из инета должна создавать лок файл, во время работы, и удалять его по завершению, скрипт его проверяет.
делов то.


Ответить | Правка | Наверх | Cообщить модератору

4. "Перемещение файлов и update"  +/
Сообщение от vic (??), 25-Июн-07, 13:55 
>программа копирующая файл из инета должна создавать лок файл, во время работы,
>и удалять его по завершению, скрипт его проверяет.
>делов то.

нафик)) пусть вместо лока по завершению копирования сама переместит куда надо файл и пропишет в базу инсерт :)

Встречный вопрос - как и что за прога копирует из нета? это скрипт? ее можно изменить или нет? Зная это можно генерить идеи близкие к жизни :)

Ответить | Правка | Наверх | Cообщить модератору

5. "Перемещение файлов и update"  +/
Сообщение от Ищущий ответы (?), 25-Июн-07, 14:39 
>>программа копирующая файл из инета должна создавать лок файл, во время работы,
>>и удалять его по завершению, скрипт его проверяет.
>>делов то.
>
>нафик)) пусть вместо лока по завершению копирования сама переместит куда надо файл
>и пропишет в базу инсерт :)
>
>Встречный вопрос - как и что за прога копирует из нета? это
>скрипт? ее можно изменить или нет? Зная это можно генерить идеи
>близкие к жизни :)
знаю только, что файлы заливает система стороней организации.
можно-ли вносить изменения в их систему  - не знаю (
Ответить | Правка | Наверх | Cообщить модератору

6. "Перемещение файлов и update"  +/
Сообщение от NuINu (??), 25-Июн-07, 14:51 
>>>программа копирующая файл из инета должна создавать лок файл, во время работы,
>>>и удалять его по завершению, скрипт его проверяет.
>>>делов то.
>>
>>нафик)) пусть вместо лока по завершению копирования сама переместит куда надо файл
>>и пропишет в базу инсерт :)
>>
>>Встречный вопрос - как и что за прога копирует из нета? это
>>скрипт? ее можно изменить или нет? Зная это можно генерить идеи
>>близкие к жизни :)
>знаю только, что файлы заливает система стороней организации.
>можно-ли вносить изменения в их систему  - не знаю (

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

Ответить | Правка | Наверх | Cообщить модератору

7. "Перемещение файлов и update"  +/
Сообщение от Ищущий ответы (?), 25-Июн-07, 15:18 
>А система эта физически где расположена? на твоем сервере или где  
>то в инете?(может она вам по какому стандартному протоколу файлы сливает?)
>
>если так надо знать имя юзера под которым она работает, и запускать
>твой скрипт только тогда когда этого юзера нету в системе.

она расположена где-то в инете
файлы копируются по scp.
А не может случиться так, что на момент проверки пользователя скриптом - его не было, но после начала копирования он (пользователь) вдруг появляется и начинает дополнительно заливать файлы?

Ответить | Правка | Наверх | Cообщить модератору

8. "Перемещение файлов и update"  +/
Сообщение от Ищущий ответы (?), 25-Июн-07, 15:24 
хотя тут мне сообщили что shell не даст скопировать недокаченный файл, типа он сам его локирует. Это действительно так?

Ответить | Правка | Наверх | Cообщить модератору

11. "Перемещение файлов и update"  +/
Сообщение от vic (??), 25-Июн-07, 16:08 
>хотя тут мне сообщили что shell не даст скопировать недокаченный файл, типа
>он сам его локирует. Это действительно так?

Нет конечно
1. линух(никсы) не винда, и не имеет moderate access к файлам.
2. shell ваще файлы не копирует, копирует утилита cp (в вашем случае scp).
3. файл удалить не вопрос т.к. при этом стирается запись из каталога (каталог это тоже файл), писатель и дальше будет писать т.к. дескриптор в процессе останется открытым и после окончания записи и закрытия дескриптора файл исчезнет уже физически (т.к. количество ссылок на inode файловой системы станет = 0.

В вашем случае видимо надо в скрипте анализировать вывод утилиты lsof перед перемещением и перемещать только файлы для которых нет открытых дескрипторв.

Еще вариант - просто перемещаем файлы. Невзирая на то пишут их или нет :)
Что прозойдет? для полностью скопированного файла все ок.
для неполностью скопированного файла - mv (или rename) перенесет файл в другой каталог при этом запись в него будет продолжаться (уже в новом каталоге!), т.к. дескриптор открыт. Останется только решить критично ли то что может сложиться ситуация что после insert в базу копируемого в данный момент файла может случиться абзац в сети и файл недокачается уже по причинам в сети?

Вышеописанный фокус с переносом открытого файла в который идет запись работает только если оба каталога находятся в одной файловой системе, на одном диске. Иначе mv (rename) вынуждена будет именно полностью переносить файл, а не перемещать запись из одного каталога в другой.

p.s. ну и эксперимент с scp нужен т.к. не наю я как он себя ведет.. cp вот не ругается=)

уф... =)

Ответить | Правка | Наверх | Cообщить модератору

12. "Перемещение файлов и update"  +/
Сообщение от Ищущий ответы (?), 25-Июн-07, 16:41 
прставил эксперимент:
запустил копирование по scp большого файла, и запустил скрипт.
Файл со старого места удалился, и появился урезанным в новом месте, но этот файл продолжал докачиваться в уже новое место. ))


Ответить | Правка | Наверх | Cообщить модератору

13. "Перемещение файлов и update"  +/
Сообщение от NuINu (??), 25-Июн-07, 17:19 
>прставил эксперимент:
>запустил копирование по scp большого файла, и запустил скрипт.
>Файл со старого места удалился, и появился урезанным в новом месте, но
>этот файл продолжал докачиваться в уже новое место. ))

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

Ответить | Правка | Наверх | Cообщить модератору

14. "Перемещение файлов и update"  +/
Сообщение от vic (??), 25-Июн-07, 17:32 
>(решение какое то не особо маштабируемое получатеся)

Плохое решение построенное на нюансах((

Следует смотреть в сторону изменения клиента: сам закачал - сам записал в базу. Или хотя бы сменил имя файлу после закачки (это можно будет безболезненно детектить далее).
Если есть возможность клиента изменять..

Ответить | Правка | Наверх | Cообщить модератору

9. "Перемещение файлов и update"  +/
Сообщение от NuINu (??), 25-Июн-07, 15:38 
>>А система эта физически где расположена? на твоем сервере или где  
>>то в инете?(может она вам по какому стандартному протоколу файлы сливает?)
>>
>>если так надо знать имя юзера под которым она работает, и запускать
>>твой скрипт только тогда когда этого юзера нету в системе.
>
>она расположена где-то в инете
>файлы копируются по scp.
>А не может случиться так, что на момент проверки пользователя скриптом -
>его не было, но после начала копирования он (пользователь) вдруг появляется
>и начинает дополнительно заливать файлы?

верно мыслишь, может! :)
может ему на это время запретить регистрироваться?

а на счет того что "оболочка недаст" я что то не уверен. не дело это оболочки.

Ответить | Правка | К родителю #7 | Наверх | Cообщить модератору

10. "Перемещение файлов и update"  +/
Сообщение от NuINu (??), 25-Июн-07, 15:51 
>>А система эта физически где расположена? на твоем сервере или где  
>>то в инете?(может она вам по какому стандартному протоколу файлы сливает?)
>>
>>если так надо знать имя юзера под которым она работает, и запускать
>>твой скрипт только тогда когда этого юзера нету в системе.
>
>она расположена где-то в инете
>файлы копируются по scp.
>А не может случиться так, что на момент проверки пользователя скриптом -
>его не было, но после начала копирования он (пользователь) вдруг появляется
>и начинает дополнительно заливать файлы?

я ман посмотрел по scp уж больно у нее набор команд ограничен. лучше бы sftp использовали. тогда и файл блокировки легко бы можно было добавлять и удалять.
а можно перед началом сессии копирования добавить в их программу(если уж не менять scp) заход на ваш сервер и создания блока по ssh и по окончании сессии scp еще раз но уже снятие блока.

т.е часть ответственности за правильное копирование перенести на их сторону. а то фигли? они копируют а вас полная каша.

Ответить | Правка | К родителю #7 | Наверх | Cообщить модератору

16. "Перемещение файлов и update"  +/
Сообщение от perece (?), 26-Июн-07, 16:43 
>>Проблемы:
>>неизвестно когда запускается скрипт, т.е. если в момент копирования из инета будет
>>запущен скрипт, то будет конфликт - скрипт переместит файл в который
>>производится запись - будет злой облом. Кто-то должен разрулить эту ситуацию
>>т.е. должен быть признак что файл полностью скопирован из инета.
>
>Именно по этой причине я и завел эту тему, т.к.как раз эта
>проблема меня и интересует.
>Есть идеи?
тут как-то была темка насчет использования lsof/fuser для детекта "недокачаных"
как раз такая же проблема решалась
нашел:
https://www.opennet.ru/openforum/vsluhforumID9/6478.html

\^P^/

Ответить | Правка | К родителю #2 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру