Non-Stop Copy v1.04
(C) Дмитрий Сергеев, 2006                mailto:dmitrys@nm.ru
Официальный сайт разработчика:           http://dmitrys.nm.ru



СИСТЕМНЫЕ ТРЕБОВАНИЯ

Операционная система – Windows 95/98/ME/NT4/2K/XP/2K3 и выше.
(Подробная информация об операционных системах – в разделе 
"СОВМЕСТИМОСТЬ".)



СОГЛАШЕНИЕ

Программа "Non-Stop Copy" абсолютно бесплатна и свободна для 
использования. Вы можете свободно ее распространять, а также включать 
в состав любых бесплатных дистрибутивов и носителей, при соблюдении 
следующих условий:
1) в ваш дистрибутив включены все файлы оригинального дистрибутива;
2) все файлы оригинального дистрибутива ни коим образом не изменены;
3) все файлы оригинального дистрибутива устанавливаются в один 
каталог.
Оригинальный дистрибутив вы можете получить на официальном сайте 
разработчика, адрес которого указан в начале данного файла.



НАЗНАЧЕНИЕ

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

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



ИСПОЛЬЗОВАНИЕ ПРОГРАММЫ

Чтобы скопировать файл, нажмите кнопку "Выбрать файл". Программа 
попросит Вас вначале указать исходный (копируемый) файл, а затем имя и 
местоположение конечного файла (куда копировать). После этого, для 
запуска процесса копирования, нажмите "Старт".

Чтобы продолжить копирование файла, не до конца скопированного другой 
программой, нажмите кнопку "Выбрать файл" и укажите вначале исходный 
(копируемый) файл, затем укажите не до конца скопированный файл в 
качестве конечного файла. Если вы все правильно сделали, то карта 
должна показать, что часть файла уже удачно скопирована. Для запуска 
процесса нажмите "Старт".

Вы так же можете копировать в один конечный файл из разных исходных 
файлов, например когда у вас есть несколько одинаковых копий файла. 
Для этого вначале запустите копирование одного из этих файлов и 
дождитесь, когда программа скопирует все что можно и остановит 
копирование. Затем нажмите "Выбрать файл" и в качестве исходного 
укажите следующую копию файла. Затем запустите копирование. Если после 
этого все еще останутся плохие участки, а у вас есть еще копии файла, 
вы можете опять указать следующий исходный файл, и т.д.

Во время процесса копирования становятся доступными две кнопки: "Стоп" 
и "Отмена".
Кнопка "Стоп" полностью останавливает процесс копирования, при этом 
сохраняются все данные о состоянии процесса на момент останова (см. 
ниже). Конечный файл после остановки имеет тот же размер, что и 
исходный файл. Он содержит все, что успело скопироваться, а части 
файла, которые скопироваться не успели или которые скопировать не 
удалось, заменяются нулевыми байтами.
Кнопка "Отмена" полностью отменяет процесс копирования, и все, что 
успело скопироваться, удаляется. Вообще, эта кнопка предусмотрена на 
тот случай, если вам необходимо быстро прекратить процесс и при этом 
его результат вас уже не интересует. Например, нажатие кнопки "Стоп" в 
самом начале копирования довольно большого файла может привести к 
некоторой задержке остановки, из-за "затирания" не скопировавшейся 
части файла нулевыми байтами. Кнопка же "Отмена" в этом случае 
прекратит процесс сразу.

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


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

Если вы хотите посмотреть информацию по какому-либо файлу, который 
копировали с помощью "Non-Stop Copy", нажмите кнопку "Отобразить 
информацию" и выберите либо скопированный файл, по которому хотите 
увидеть информацию, либо соответствующий NSC-файл.
NSC-файл сохраняется с атрибутом "скрытый", поэтому, чтобы увидеть 
его, вы должны включить в настройках проводника отображение скрытых 
файлов.



ОПИСАНИЕ ПРОЦЕССА КОПИРОВАНИЯ

Процесс копирования файла разделен на 4 этапа: быстрое копирование, 
детализация, точная детализация, копирование плохих секторов. Цель 
этого разделения – за как можно меньшее время скопировать как можно 
больше хороших секторов, и на каждом этапе получать все более 
детальную картину плохих секторов.

Быстрое копирование. Файл копируется довольно большими блоками. Размер 
этого блока определяется опцией "Буфер быстрого копирования"; если 
включена опция "Авто", то буфер равен 1mb при копировании с быстрых 
носителей (CD, HDD), и 64kb при копировании с медленных носителей 
(FDD). Если внутри такого блока окажется плохой сектор, весь блок 
будет считаться "плохим". В результате достигается быстрый пропуск 
групп плохих секторов и получается довольно приблизительная картина 
плохих участков файла.

Детализация. Каждый плохой участок копируется по секторам до первого 
плохого сектора, сперва двигаясь от начала плохого участка, затем от 
конца плохого участка в обратном направлении. В результате при малых 
затратах времени получается более точная картина локализации групп 
плохих секторов.

Точная детализация. Программа пытается скопировать каждый сектор во 
всех плохих участках. По окончанию этого этапа получается реальная 
картина плохих секторов.

Копирование плохих секторов. Программа пытается скопировать каждый 
плохой сектор, при этом делает подряд несколько попыток чтения. 
Количество попыток определяется опцией "Попыток скопировать плохой 
сектор". Именно на этом основана способность программы копировать 
информацию из плохо читаемых секторов, так как в некоторых случаях 
(например, старый или плохо записанный CD-R диск) есть вероятность, 
что сектор все-таки прочитается.

Такое разделение на этапы всегда позволяет вам в процессе копирования 
решить: ждать дальше или же остановиться на достигнутом. Если вы 
считаете, что скопированного достаточно, просто нажмите кнопку "Стоп". 
Позже вы сможете продолжить копирование, если результат вас все-таки 
не устроит.

Программу можно настроить таким образом, чтобы последний этап 
повторялся до тех пор, пока весь файл не будет успешно скопирован. 
Потому программа и называется – Non-Stop Copy. Этого поведения можно 
добиться с помощью опции "Макс. кол-во циклов 'плохого копирования'", 
которая определяет, сколько раз будет повторен последний этап.

В процессе копирования программа пытается контролировать время, 
которое будет затрачено на ту или иную операцию чтения. Размер этих 
временных интервалов устанавливается опциями в разделе "Таймауты 
чтения данных". К сожалению, срабатывает ли оно или нет, точно сказать 
сложно – у кого как. Программа честно пытается отменить операцию 
чтения по истечении указанного времени, а остальное зависит от 
драйверов, установленных в операционной системе, и от самого привода.



ОПЦИИ

"Буфер быстрого копирования" - определяет размер блока при быстром 
копировании. При включенной опции "Авто" это значение выбирается 
автоматически в зависимости от типа носителя, на котором расположен 
исходный файл: 1mb при копировании с быстрых носителей (CD, HDD) и 
64kb при копировании с медленных носителей (FDD).

"Попыток скопировать плохой сектор" - определяет количество попыток 
скопировать плохой сектор на этапе "Копирование плохих секторов".

"Макс. кол-во циклов 'плохого копирования'" - определяет, сколько раз 
будет повторен этап "Копирование плохих секторов", при условии наличия 
плохих секторов. Если это значение равно 0, количество повторов не 
ограничено – попытки продолжаются до тех пор, пока абсолютно все не 
прочитается.

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

"Период автосохранения NSC-файла" - определяет в миллисекундах, как 
часто в процессе копирования будет автоматически сохраняться NSC-файл.

"Период проверки готовности носителя" – определяет в миллисекундах, 
как часто программа будет опрашивать носитель на готовность, в случае 
извлечения носителя во время процесса копирования.

Раздел "Настройки цветов карты файла" позволяет вам изменить цвет 
соответствующего элемента на карте.



КОМАНДНАЯ СТРОКА

С программой можно работать через командную строку.

Использование:
  nscopy.exe [ИсходныйФайл] [КонечныйФайл] [/e] [/p] [/w] [/c] [/u]
или
  nscopy.exe [<Файл или NSC-файл> /i]

где:
  ИсходныйФайл - имя исходного (копируемого) файла
  КонечныйФайл - имя конечного файла (куда копировать)
  Файл или NSC-файл - имя скопированного файла, по которому необходимо 
отобразить информацию, либо непосредственно имя NSC-файла
  /e - выйти из программы после завершения копирования
  /p - выключить компьютер после завершения копирования
  /w - не начинать копирование сразу
  /c - показать диалог выбора файла
  /i - отобразить информацию по скопированному файлу
  /u - не выдавать никаких сообщений, требующих реакции пользователя



СОВМЕСТИМОСТЬ

Полная функциональность обеспечивается на линейке Windows NT 
(NT4/2K/XP/2k3/...)

Под Windows 9x (95/98/ME) программа имеет одно ограничение – не 
работают таймауты чтения данных. Хотя потеря не велика - они и так 
редко работают. ;)



ДОПОЛНИТЕЛЬНО

Прочитайте файл "howto.txt", в нем вы можете найти некоторую полезную 
информацию. Например, как копировать с помощью NSCopy целые каталоги.

Специально для "гениев", которые недавно открыли для себя редакторы 
бинарных файлов. В случае изменения авторских прав (строчка копирайта 
внизу главного окна), правильность работы программы может сильно 
пострадать. Это как бы небольшой намек.
Если так хочется рекламы, вам ничто не мешает сделать установщик, 
который будет рекламировать что угодно и как угодно.



ИЗВЕСТНЫЕ ПРОБЛЕМЫ

- Не работает TAB и ENTER в главном окне – просто пока этого не 
сделал.
- В Windows 9x, при извлечении диска во время процесса копирования, 
выскакивает синий экран с просьбой вставить диск. Я пока затрудняюсь, 
как решить эту проблему. Если у кого есть идеи – напишите мне, 
пожалуйста. SetErrorMode(), если что, тут не помогает.



ЧТО В БУДУЩЕМ

Очень приблизительный план, в порядке очередности реализации:

- поддержка Unicode
- копирование каталогов
- возможность создания патч-файлов

Если одна из этих возможностей реально вам понадобилась – напишите мне 
об этом. Возможно, это придаст мне стимул, и в следующей версии вы 
увидите то, что хотели. 

Так же принимаются предложения по локализации программы на другие 
языки.



БЛАГОДАРНОСТИ

Прежде всего, хочу выразить огромную благодарность Алексею 
(w4mn@yandex.ru), за неоценимую помощь в корректировании документации, 
интерфейса, и, самое главное, за качественную английскую локализацию 
интерфейса.
PropheT'у (vidimong2002@ukr.net) - за украинскую локализацию.
Моему брату, Сергееву Виталию (vetal@gorodok.net) - за создание сайта, 
помощь в тестировании и вообще за все. :)
Ушаткину Леониду (theleo2k3@list.ru) - за помощь в тестировании.

А так же всем, кто писал, за ваши отзывы и предложения.



ИСТОРИЯ ВЕРСИЙ (ЧТО НОВОГО)

1.04 (27/02/2006)
   Продолжение копирования не только с того же этапа, но и с той же 
позиции в файле, на которой остановились.
   Добавлен ключ /u .
   При извлечении носителя в процессе копирования не появляется 
системных диалогов. Теперь программа сама ожидает готовности любого 
носителя, в том числе и сетевого. В результате теперь можно 
использовать программу для безопасного копирования файлов по сети.
   В заголовке окна и в панели задач отображается "Готов", когда 
процесс копирования остановлен.
   Если файл полностью успешно скопирован, то конечному файлу 
выставляются дата модификации и атрибуты исходного файла.
   Убрана никому не нужная опция "Таймаут отмены процесса 
копирования".
   Добавлены настройки цветов карты файла.
   Исправлен русский интерфейс и сделана качественная английская 
локализация (спасибо Алексею)
   Добавлена украинская локализация (спасибо PropheT'у)
   До сих пор не везло с командной строкой. Теперь она полностью 
переделана - работать должно всегда.


1.03 (24/03/2005)
   Добавлена поддержка Windows 9x .
   Добавлена возможность копирования файлов размером больше 4GB .
   Сообщения об ошибках стали гораздо более точными и подробными
   Добавлено преобразование коротких имен файлов в длинные.
   Диалог выбора файла исправлен и стал более дружественный: 
предлагает сохранить файл под своим именем и в тот же каталог, куда 
копировался предыдущий файл.
   Добавлена кнопка отмены процесса копирования.
   Теперь по умолчанию последний этап повторяется только один раз, а 
то иногда люди не догадывались, что нужно нажать "Стоп" и ждали по 
несколько часов.
   Зато количество попыток чтения плохого сектора по умолчанию 
увеличено до пяти.
   Реорганизован движок копирования, он стал надежнее и гибче.
   Теперь запись в конечный файл без кэша производится только при 
быстром копировании, на остальных этапах кэш включается – это слегка 
ускорило процесс.
   Формат инфофайла изменился, ввиду поддержки файлов >4GB .
   Исправлена ошибка в обработке командной строки.
   Исправлено отображение начального состояния окна, теперь "запустить 
свернутым" будет работать.
   Исправлено неправильное освобождение памяти буфера копирования
   Исправлена потенциальная ошибка в быстром копировании (очень 
маловероятно, но могла проявляться как завершение первого этапа 
раньше, чем на карте добрались до конца файла плюс смещение реального 
положения плохих блоков, в общем – искажение карты).
   Слегка оптимизировано обновление карты.
   Исправлено копирование пустых файлов – теперь оно работает. :)
   Теперь не остается файла полностью забитого нулями, если вообще 
ничего не удалось скопировать.
   Исправлено неверное поведение программы при буфере превышающем 
объем свободной физической памяти.
   Еще всяческие косметические и мелкие исправления.


1.02 (17/12/2004)
Первая публичная версия. До нее программа прошла целый ряд альфа 
версий, набралась стабильности.



