Форум русскоязычного сообщества Ubuntu


Следите за новостями русскоязычного сообщества Ubuntu в Twitter-ленте @ubuntu_ru_loco

Автор Тема: Странное поведение убунты  (Прочитано 954 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн const86

  • Автор темы
  • Новичок
  • *
  • Сообщений: 27
    • Просмотр профиля
Странное поведение убунты
« : 05 Август 2015, 22:50:27 »
Столкнулся, со странным поведением убунты с файлами. Я бы даже сказал сюарилистичным.
Если копировать файл на компьютер с убунтой (по SMB), то с этим файлом можно делать все что угодно. Вплоть до удаления. Причем после файл копируется как ни в чем не бывало.

Скажите, это нормально для убунты? И можно ли отключить данный эффект?

UPD.
Задача такая. Есть демон который слушает директорию на появление новых файлов (zip). Как только появляется новый файл, он его обрабатывает, и заносит в базу данных. Файлы копируются на хост по SMB. Демон пытается его прочесть. А т.к. Samba не блокирует файл, пока он копируется - демон выводит ошибку. Что нужно сделать такое, что бы демон мог понять, файл еще копируется, поврежден, или с ним все ОК.
« Последнее редактирование: 07 Август 2015, 15:29:02 от const86 »

Оффлайн Peter_I

  • Старожил
  • *
  • Сообщений: 2194
    • Просмотр профиля
Re: Странное поведение убунты
« Ответ #1 : 05 Август 2015, 23:46:05 »
Ваше сообщение само несколько сюрреалистическое, т.к. я вот не понял,
что именно можно удалить? Сам файл или его копию в Ubuntu?
И что именно из двух потом можно снова копировать?
Пётр.

symon2014

  • Гость
Re: Странное поведение убунты
« Ответ #2 : 06 Август 2015, 06:30:08 »
const86,
Измени права доступа к файлу или владельца, и он станет неприступным как скала.

Оффлайн const86

  • Автор темы
  • Новичок
  • *
  • Сообщений: 27
    • Просмотр профиля
Re: Странное поведение убунты
« Ответ #3 : 06 Август 2015, 09:09:00 »
Ваше сообщение само несколько сюрреалистическое, т.к. я вот не понял,
что именно можно удалить? Сам файл или его копию в Ubuntu?
И что именно из двух потом можно снова копировать?
Вот потому сообщение и сюрреалистично, потому что ситуация такая. Удалить можно его копию в Ubuntu. А точнее еще копирующуюся.
В общем по подробнее. Копирую с удаленной машины (назовем его клиент) на ubuntu (назовем его хост) файл (большой). Пока этот файл копируется, захожу на хост, и удаляю этот (еще копирующийся) файл. Клиент это удаление не замечает и продолжает копировать. Могу в процессе копирования перенести этот файл (на хосте), и по окончании эта копия окажется вполне валидной. Могу в процессе процессе копирования изменить этот файл (на хосте), и тогда мои изменения могут сохраниться, а могут быть и переписаны системой.

Измени права доступа к файлу или владельца, и он станет неприступным как скала.

Увы мне делать его не преступным не нужно. А точнее этот файл должен быть не преступен пока копируется. Потом я должен делать с ним все что угодно.

P.S. Да совсем забыл. Система 12.0.4.5 LTS. На других версиях это не тестировал.

Оффлайн Peter_I

  • Старожил
  • *
  • Сообщений: 2194
    • Просмотр профиля
Re: Странное поведение убунты
« Ответ #4 : 06 Август 2015, 09:28:08 »
Ваше сообщение само несколько сюрреалистическое, т.к. я вот не понял,
что именно можно удалить? Сам файл или его копию в Ubuntu?
И что именно из двух потом можно снова копировать?
Вот потому сообщение и сюрреалистично, потому что ситуация такая. Удалить можно его копию в Ubuntu. А точнее еще копирующуюся.
В общем по подробнее. Копирую с удаленной машины (назовем его клиент) на ubuntu (назовем его хост) файл (большой). Пока этот файл копируется, захожу на хост, и удаляю этот (еще копирующийся) файл. Клиент это удаление не замечает и продолжает копировать. Могу в процессе копирования перенести этот файл (на хосте), и по окончании эта копия окажется вполне валидной. Могу в процессе процессе копирования изменить этот файл (на хосте), и тогда мои изменения могут сохраниться, а могут быть и переписаны системой.
Зря беспокоитесь. Насколько я представляю, это нормальное поведение для Linux. Она так действует ради вашего же блага.
И что удивительного в том, что вы можете удалить копию файла в Ubuntu? Вы же его владелец.
Пётр.

Оффлайн const86

  • Автор темы
  • Новичок
  • *
  • Сообщений: 27
    • Просмотр профиля
Re: Странное поведение убунты
« Ответ #5 : 06 Август 2015, 14:03:28 »
Зря беспокоитесь. Насколько я представляю, это нормальное поведение для Linux. Она так действует ради вашего же блага.
И что удивительного в том, что вы можете удалить копию файла в Ubuntu? Вы же его владелец.

Что удивительного? А то что файла фактически еще нет (он не скопирован). А поведение это не нормально. И благом я это не чувствую. Ибо как мне защитить файл от модификации (пока я с ним работаю)? Как разрешить в таком случае коллизии, если 2 процесса работают над одним файлом?
Но ладно, выяснил, что такое поведение нормально для линукс, вообще. Тогда остается другой вопрос. Как мне заблокировать этот файл (когда копируется)? Интересует, в частности, при копировании по SMB. И разблокировать, когда копирование закончится?
« Последнее редактирование: 06 Август 2015, 14:05:25 от const86 »

Оффлайн Peter_I

  • Старожил
  • *
  • Сообщений: 2194
    • Просмотр профиля
Re: Странное поведение убунты
« Ответ #6 : 06 Август 2015, 14:56:41 »
Пока он копируется, с ним и так ничего не случится, система сама его блокирует, по вашей терминологии.
Вы изъяснитесь удовлетворительнее, чего вы хотите добиться, т.к. мне это непонятно.

Если вы защитите файл от модификации, то вы и сами не сможете его изменить.
Если с файлом работают никак не связанные между собой процессы, то за целостностью файла следит система.
Если это процессы в написанной вами программе, то это полностью ваша ответственность.
Если возможно, то сделайте копию файла и работайте с ней, а потом замените им оригинал.
Пётр.

Оффлайн const86

  • Автор темы
  • Новичок
  • *
  • Сообщений: 27
    • Просмотр профиля
Re: Странное поведение убунты
« Ответ #7 : 06 Август 2015, 17:24:17 »
Пока он копируется, с ним и так ничего не случится, система сама его блокирует, по вашей терминологии.
Вы изъяснитесь удовлетворительнее, чего вы хотите добиться, т.к. мне это непонятно.

Если вы защитите файл от модификации, то вы и сами не сможете его изменить.
Если с файлом работают никак не связанные между собой процессы, то за целостностью файла следит система.
Если это процессы в написанной вами программе, то это полностью ваша ответственность.
Если возможно, то сделайте копию файла и работайте с ней, а потом замените им оригинал.

Ну вопервых, пока он копирует, система его не блокирует, о чем я и говорю. Вовторых, система не гарантирует целостность файла. Мне удавалось модифицировать файл в процессе копирования (и после его окончания изменения вступили в силу).

Я и без того делаю копию файла, над ней я и бьюсь. А именно мне нужно, что бы приложение, начало работу с файлом после копирования, сразу/не сразу уже не важно, раз уж на то пошло. А т.к. размер и скорость копирования могут быть разными предугадать, когда обработать файл я не могу.
« Последнее редактирование: 06 Август 2015, 17:38:40 от const86 »

Оффлайн Peter_I

  • Старожил
  • *
  • Сообщений: 2194
    • Просмотр профиля
Re: Странное поведение убунты
« Ответ #8 : 06 Август 2015, 21:11:13 »
Так запускайте это приложение после окончания копирования,
например, из скрипта. У вас проблемы на ровном месте.
Пётр.

Оффлайн const86

  • Автор темы
  • Новичок
  • *
  • Сообщений: 27
    • Просмотр профиля
Re: Странное поведение убунты
« Ответ #9 : 07 Август 2015, 10:13:41 »
Ну во первых, приложение работает в режиме демона. А во вторых, как автоматом запустить скрипт после окончания копирования?

Оффлайн Peter_I

  • Старожил
  • *
  • Сообщений: 2194
    • Просмотр профиля
Re: Странное поведение убунты
« Ответ #10 : 07 Август 2015, 13:30:51 »
Откуда же я знаю, что у вас за приложение и что вообще у вас происходит.
Это конкретный случай. Если хотите, чтобы вам что-то посоветовали, то опишите ситуацию полностью.
Но это буду уже не я, т.к. я дня два не буду сюда заходить.
Пётр.

Оффлайн const86

  • Автор темы
  • Новичок
  • *
  • Сообщений: 27
    • Просмотр профиля
Re: Странное поведение убунты
« Ответ #11 : 07 Август 2015, 15:27:40 »
ОК.
Задача такая. Есть демон который слушает директорию на появление новых файлов (zip). Как только появляется новый файл, он его обрабатывает, и заносит в базу данных. Файлы копируются на хост по SMB. Демон пытается его прочесть. А т.к. Samba не блокирует файл, пока он копируется - демон выводит ошибку. Что нужно сделать такое, что бы демон мог понять, файл еще копируется, поврежден, или с ним все ОК.
« Последнее редактирование: 07 Август 2015, 15:29:11 от const86 »

Оффлайн bazzilio

  • Любитель
  • *
  • Сообщений: 56
    • Просмотр профиля
Re: Странное поведение убунты
« Ответ #12 : 08 Август 2015, 01:41:11 »
посмотрите, как действует тот же хром: во время закачки файл имеет расширение .crdownload
После завершения закачки это расширение удаляется и файл становится доступен.
Вполне реальный пример ;)


Оффлайн const86

  • Автор темы
  • Новичок
  • *
  • Сообщений: 27
    • Просмотр профиля
Re: Странное поведение убунты
« Ответ #13 : 08 Август 2015, 16:18:05 »
Это бы решило все проблемы. Но файл на машину копируется то через SMB.

Оффлайн bazzilio

  • Любитель
  • *
  • Сообщений: 56
    • Просмотр профиля
Re: Странное поведение убунты
« Ответ #14 : 09 Август 2015, 09:45:36 »
Ну либо вам нужно блокировать файл на чтение. flock и всё такое.
Либо, если у вас просто копирование - я бы копировал файл, а по его завершении выкладывал *.checksum файл, в который клал чексумму файла.
Так вы с гарантией будете знать, что файл точно докачался.
Логика такая: появился файл filename.checksum - значит проверить наличие файла filename и корректность его чексуммы.

 

Страница сгенерирована за 0.174 секунд. Запросов: 23.