Имя: Пароль:
1C
 
Гуру-тест: копирование файла.
Ø (Волшебник 19.03.2015 16:01)
,
0 Гений 1С
 
гуру
07.03.15
23:09
Файл копируется по сети из папки А в папку Б.
Если происходит сбой копирования, то в папке Б остается такой же файл, такого же размера, как и исходный, но содержимое разное, т.к. файл в папке Б просто зарезирвировал место, но докопироваться не успел (именно так работает метод 1С СкопироватьФайл).

Какой самый простой сбособ убедиться в том что файл скопирован корректно.

Предупреждаю - самый простой способ проще, чем CRC или MD5! ;-)
1 Torquader
 
07.03.15
23:18
Во-первых, никто не обещает, что размер будет правильный, так как это зависит от реализации.

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

Просто, тот, кто файл будет кушать, не должен вообще видеть целевой файл до окончания его записи, и не важно, успешной она будет или нет.
2 Гений 1С
 
гуру
07.03.15
23:38
(1) так какой твой ответ? я проверял размеры, они одинаковые даже в случае аварийного прерывания.
3 Torquader
 
07.03.15
23:42
(2) А тебе написал способ, как надо делать.
Просто, размер в случае сетевого копирования может быть записан в момент начала копирования, а то, что "хвост застрял", это файловую систему не волнует - место под файл будет выделено, а вот данные - до конца не записаны.
Если переименование делается после копирования, то не нужно изучать не переименованный файл - его можно просто удалить и повторить операцию.
4 GROOVY
 
07.03.15
23:43
(0) Нормальные системы с журналированием такого не допускают. Гуру пользуются именно такими.
5 Torquader
 
07.03.15
23:45
(4) Система с журналированием откатит операции, если они не записаны в журнале.
Но, в случае битой памяти или кривого сетевого адаптера вас никакое журналирование не спасёт.
6 GROOVY
 
07.03.15
23:48
(5)  Ну у нас "гур" нормальные адаптеры и тем более память. А вариантов нестанартной работы ФС можно кучу привести.
А вопрос ТС не понятен.
7 vde69
 
07.03.15
23:52
100% гарантия http://infostart.ru/public/16687/
8 Torquader
 
07.03.15
23:53
(6) "Блажен, кто верует".

P.S. а переименование после копирования - это и есть наипростейшая реализация системы журналирования.
9 TormozIT
 
гуру
07.03.15
23:54
(1) +1
Мы при асинхронном обмене данными исключительно так и делаем.
10 Torquader
 
07.03.15
23:55
(7) SQL-базу для передачи файлов - что-то это напоминает ... м... микроскопом и по гвоздям.
11 mikecool
 
07.03.15
23:57
(0) Серега, рассказывай, а то чувствую - щас разопрет от удовольствия
12 Котокот
 
08.03.15
00:02
И не спится же людям в предверии восьмогомарта...
13 mikecool
 
08.03.15
00:04
(12) я днем выспался )
14 Asmody
 
08.03.15
00:05
Сейчас окажется, что Фмксин изобрел код Хемминга
15 vde69
 
08.03.15
00:05
(10) ты знаешь у нас были проблемы с обменом, после внедрения обмена через скуль проблем не осталось вообще, даже человека одного сократили :)
16 bolobol
 
08.03.15
00:06
ДатаВремя файла смотреть
17 Hans
 
08.03.15
00:09
Самый простой способ это пробовать загрузить файл обмена по твоей уникальной системе РИБ, если вылетает ошибка - значит файл нормально не скопировался.
18 Torquader
 
08.03.15
00:11
(15) Если бы сделали через почту, то, наверное, и ещё одного можно было бы сократить, например, админа SQL-сервера.
19 vde69
 
08.03.15
00:15
(17) самое простое - архив, если развернулся - значит хороший с определенной вероятностью...
20 Злопчинский
 
08.03.15
00:17
Фигня.. у меня клиент один после моей дописки из десяти менеджерооператоров троих или четверых оставил, причем одного из них перевел на "складскую" работу...

Наверное, хорошо, что персонал не знал кто и что писал... а то пришлось бы скрываться...

Но это уменя один такой успешный выстрел (как Аврора), (если не считать наведения порядка на складе, где вообщем тоже народу поубавилось ощутимо).
21 zulu_mix
 
08.03.15
00:19
прочитать последние N байт у источника и приемника и сравнить
22 Asmody
 
08.03.15
00:24
(21) почему не N первых или N из середины?
23 zulu_mix
 
08.03.15
00:25
(22) потому что файл при копировании записывается с начала
24 vde69
 
08.03.15
00:28
(23) при многопоточной записи это не так.... фтп например...
25 Гений 1С
 
гуру
08.03.15
00:29
(3) бинго! да, именно так. копируем, потом переименовываем. ;-)
я то просто тупо копировал, когда конфигурацию целиком на точку передаю.
26 zulu_mix
 
08.03.15
00:29
(24) в задаче четко написано "из сетевой папки А в Б методом СкопироватьФайл"
27 zulu_mix
 
08.03.15
00:32
(25) тьфу на тебя. нельзя было в задаче сказать что тебе нужна гарантированная доставка всего файла?
28 Гений 1С
 
гуру
08.03.15
16:59
(27) настоящий программист 1с должен уметь вытаскивать клещами постановку задачи из программиста.
29 ДенисЧ
 
08.03.15
17:01
(28) Настоящий программист должен уметь расписываться в ведомости на получение зарплаты и премии.
Всё остальное - лишнее.
30 tridog
 
08.03.15
17:02
(25) Тьфу, я уж думал чего интересного почитаю в кой-то веки
31 Гений 1С
 
гуру
08.03.15
17:03
Кстати, переписал код по отправке конфигурации, а то иногда не копировалась из-за этого глюка из-за сетевых сбоев. ;-)
32 Torquader
 
08.03.15
18:39
(31) Молодец!
33 Гений 1С
 
гуру
08.03.15
20:41
(32) ну да, а то че-то сбои при копировании часты, было бы много лишней ручной работы. А так красиво и сердито, 20 метров летают легко и непринужденно.
34 H A D G E H O G s
 
08.03.15
20:48
(33) Молодец.
AdBlock убивает бесплатный контент. 1Сергей