Копирование файлов с проверкой

Обновлено: 05.07.2024

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

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

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

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

exactfile программа для проверки целостности файлов

Одним из возможных сценариев использования этой программы - это совместное использование с приложениями для резервного копирования. Алгоритм в данном случае будет достаточно простым. Сначала вы запускаете ExactFile, которая создает апплет TestFile для проверки файлов и их данных внутри каталога. Затем выполняете резервное копирование файлов. И в конце запускаете TestFile.exe в резервной копии. Существует версия ExactFile для консольной строки, которую можно использовать в командных файлах совместно с другими программами, как например, с тем же резервным копированием.

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

Примечание: В случае с полной резервной копией, вы можете использовать хитрость с созданием виртуального диска на основе архива, при помощи программы WinMount. И уже на виртуальном диске запустить проверку файлов.

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

Копирование файлов с проверками (подобие xcopy из win)

Софт под Linux, разные программы, но только связанные с Linux

Модератор: /dev/random

Копирование файлов с проверками

я съэкономил на покупке МедиаБанка (типа мониторчик и 2.5hdd в маленькой коробочке)

взял старый ноут Sony (PCG505) 200мhz, он очень маленький, поставил туда HDD на 30Гб, PuppyLinux (не initrd, а как обычный линукс), кастрировал все что только можно - машина зверь!

Но вот в том МедиаБанке который я не купил, была фишка - "копировать и проверять". Работает медленнее, зато уверенность, что все фотки с флешки скопировались и скопировались правильно. мало ли какой аппаратный сбой.

в мире Win есть xcopy. хотя я ее никогда не использовал.

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

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


Проблема в том, что я не предстваляю где может случиться сбой - при чтении с флешки или при записи на внетренний HDD?

проще конечно заюзать perl и читать с флешки по 1024кб и скармливать md5_sum() и параллельно писать в файл на HDD.

не хочу изобретать велосипед. Поиск ничего не дал, кроме dd_rescue и GNU ddrescue. но помоему это не то.

ТД:
в ноуте PCMCIA USB2.0. чтение с флеш не выше 10мб/с, чтение с hdd 9-11 Мб/с. запись конечно медленнее.
не очень скоростные SD карты по 2 Гб. (ок. 7Мб/с чтение)
фотки по 3-4 Мб JPG и 9 Мб RAW

Программки такой не знаю. Но рискну высказаться не по теме. Осмысленность такого действа -- где-то в дельта-окрестности нуля. Если Вы не доверяете железу, то проверять отдельные файлы бессмысленно, ибо в конце концов грохнутся метаданные файловой системы и настанет пиндык гораздо более, чем одному файлу. Если винт сыплется, то файл может записаться и даже сразу прочитаться правильно, но через день осыпется и гуд бай. А всякими дурацкими программами, типа этой, вы убъете винт еще скорей. Но вот в том МедиаБанке который я не купил, была фишка - "копировать и проверять". Работает медленнее, зато уверенность, что все фотки с флешки скопировались и скопировались правильно. мало ли какой аппаратный сбой.
напоминает какой-то маркетинговый ход, если честно. железо, кстати, само по себе не такое уж глупое и проверки там внутри и так присутствуют. проще конечно заюзать perl и читать с флешки по 1024кб и скармливать md5_sum() и параллельно писать в файл на HDD.
при записи писать CRC32, при чтении - проверять.
MD5 очень долго, даже на новых CPU, а CRC32 вполне достаточно. скрипт на bash'е даже такой бегинер как я за часок наваяет

Скоро придёт
Осень

MD5 очень долго, даже на новых CPU, а CRC32 вполне достаточно.

и правда, md5 положил его на лопатки, а crc считает быстро.

хотелось просто все в одном флаконе. создать текстовый файлик с данными [путь] [crc32] легко. и также легко его заюзать для проверки созданных копий.


Но это похоже на костыли. хочется прекрасного эллегантного.


да-да!
Когда Вы качаете файлик с внешней машины, то на каждом этапе идет проверка. Глупо не доверять железу. Особенно когда приходится перезакачивать битое

короче проблема решилась.

лень искать|выбирать, напиши свое

перл скрипт которому передаются 2 абсолютных пути

запускающий вызовы оболочки find [путь] -type f для формирования списка оригиналов
и cksum для генерации контрольной суммы

подготовительные вещи не включая вызов cksum на папке с 93 фотками (340Мб) тратит 0.5сек. (засекал `time [program]`)
(P1 200mHz, 32RAM)
полный вызов 1.5 минуты.


но кажется это какая-то кастрированная утилита COMPARE FOLDERS собственного написания.

надо сделать так, чтобы она вначале еще и копировала сами файлы. тогда хоть какой-то смысл.

Я вспомнил чего страшился!

и правда, чего переживать - HDD новый, комп под Linux-ом - какие еще нужны гарантии

Это была передача или статья про компьютер в космосе. Что они там используют довольно убогую по производительности аппаратуру, но зато она устойчива к бомбардировке электронами.
А раньше компы в серверной начинали глючить когда заходила тетя из бухгалтерии в синтетическом наряде.

сейчас конечно таких проблем нет, но например, когда передаешь видео по FireWare от камеры к компу и положить мобильник на провод, можно увидеть много эффектов.

Тернист путь мыслей блуждающих

часто ограничить и сформулировать функциональность труднее ее реализации.

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

идем по пути наименьшего сопротивления. т.к. оперативной памяти всего 32 мб. а доступно для кэша не более 15 (в течении недели проверял вывод /proc/meminfo)
данные будут замещены после 5-ит JPG файлов (копируем фотки по 3 мб не меньше) или 2-х RAW.

скрипт на Perl, т.к. более знаком чем с bash и прочими


скрипту даем 2 абсолютных пути: source и target
на source натравливает "find /source/path -type f" и получаем список файлов с абсолютными путями
помещаем в массив который shift-им и скармливаем `cp -pu /souce/path/f1 /target/path/f1`
т.к. массив уменьшается - имеем плюс - счетчик сколько фалов осталось скопировать (против немого `cp -Rpu`)
из проблем - нужно создать структуру подпапок заранее (find /source/path -type d) и скармливаем результаты `mkdir /target/path/..`

что интресно - на эксперементальном компе (PCG-505G P1 200mHz 32mb RAM) операция копирования cp -Rpu работает на 10% дольше perl скрипта тойже функциональности.
(видимо из-за проверок и создания вложенных папок)
(встречал как-то скрипт подсчета размера папки с использованием find, ls -l и awk работающего очень быстро)

запускаем sync на всякий случай.

скопировав файлы приступаем к их проверке.
основываясь на том, что из кэша выдавливается после 3 фоток, начинаем проверку в том же порядке как копировали.

используя тот же массив, в который скопировали пути к оригинальным файлам, начинаем провеку.
если считаная повторна пара по crc совпадает пишем в консоль ОК и в любом случае в summs.crc записываем скс о нем
если произошел сбой, пишем в copy.log комманд на повторное копирование типа "cp -pi /source/path /target/path" (в summs.crc для него уже будет запись, только вера ей на 1/2)

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


немного статистики (напомню, что это PCG-505G P1 200mHz 32mb RAM 30Gb Fujitsu 5400rpm noDMA):

данные для непрерывного потока: чтение через hdparm -t /dev/dev, а запись через dd из /dev/zero в any.file


резульаты для самопальных прог (тестовые файлы 340мб, 93 шт JPG/RAW, на 2Gb SD kingson с которой hdparm смог выжать 5 мб/с чтения)

по идее последний пунк должен быть суммой хотябы голого копирования и провеки из двух источников. почему-то получилось дольше. лень разбираться.
по итогу имеем 4.3 мб/с системной функции копирования и 1.8 мб/с самопальной с проверками.

т.е. более чем в 2 раза. скжем 1800кб - 7 минут против почти 20-ти.
и это при том, что используя cksum, а это помоему crc16, а не crc32.


лично мне кажется, что хакнуть dd и просить его считывать маленькими блоками по 2 раза с soucePath и сравнивать чтобы они были одинаковыми, а потом писать в targetPath и тут же считывать - работало бы быстрее чем подсчитывать суммы для целого файла.


Хотя мой, только что изобретенный кривенький велосипед, меня устраивает.
лень - лучший аргумен ничего не делать.

Раньше процесс переноса файлов с носителя (флешка, CD-диск) не вызывал каких-либо трудностей. Небольшие файлы перемещались на ПК за считанные минуты. Стандартного механизма переноса данных Windows вполне хватало. Но со временем объёмы жёстких дисков начали увеличиваться, и размеры файлов становились всё больше и больше. Это вызвало ряд проблем: ограничение по скорости для больших объёмов, длительная проверка, занимающая колоссальное время. Эти проблемы и вызвали появление отдельных программ для копирования. Их мы и рассмотрим в этой статье.

Рейтинг лучших программ для копирования файлов

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

Давайте рассмотрим список лучших программ для копирования файлов на компьютер.

FastCopy

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

FastCopy

FastCopy использует механизм копирования, который отличается от Explorer. Улита считывает большие фрагменты вместо маленьких. Соответственно программа работает намного быстрее и практически не нагружает систему. FastCopy позволяет определять скорость копирования и размер буфера.

Встроенная функция NonStop делает процесс более удобным (даже при выявлении ошибок процесс будет продолжаться).

Также представлена портативная версия FastCopy Portable, осуществляющая только одну функцию — копирование, но значительно быстрее, чем это делает стандартный Explorer, при этом его даже не нужно устанавливать на компьютер. Достаточно загрузить улиту на флешку и использовать на разных девайсах.

SuperCopier

SuperCopier

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

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

SuperCopier дополняет стандартную улиту, а не заменяет её.

Total Copy

Приложение копирования файлов для Windows – Total Copy – отличная альтернатива стандартному Explorer. Ускоряет процесс копирования и позволяет осуществлять полный контроль над действием. Программа необходима для устаревших компьютеров, где копирование больших объёмов отнимает очень много времени. Улита очень простая в использовании и не имеет широкого функционала, но отлично выполняет целевую задачу.

Среди основных преимуществ выделяют возможность возобновить процесс после сбоев.

Ultracopier

Ultracopier

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

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

Дополнительно можно указать, что программе делать при возникновении ошибок, так как улита поместит их в журнал, где отображена причина ошибки.

Ultracopier позволяет добавлять несколько процессов с разными путями.

TeraCopy

TeraCopy

Небольшая программа, значительно расширяющая стандартные возможности копирования. Используя асинхронный перенос и сокращая время поиска, TeraCopy демонстрирует максимальную скорость передачи.

AnyReader

AnyReader

Популярная на отечественном рынке улита, помогающая перенести документы с повреждённого или плохо читаемого устройства хранения. Программа работает с CD/DVD дисками, жёсткими дисками, USB-флешками, картами памяти и пр. В отличие от системной программы, улита может извлечь файлы с носителя, имеющего физические повреждения.

В AnyReader предусмотрена функция объединения нескольких копий повреждённого документа с целью получить один целый. AnyReader можно использовать для безопасного переноса внутри нестабильной сети (Wi-Fi, Bluetooth, LAN). Если связь прервалась, приложение продолжит процесс с места остановки.

Работает на операционных системах Windows 10, 8.1, 8, 7, XP.

Приложение платное, купить лицензию можно на официальном сайте.

Программы для копирования и перемещения файлов помогают упростить процесс переноса файлов с разных носителей. Для выполнения ежедневных задач однозначно понадобится улита, помогающая без трудностей справляться с большими объёмами. Выше наведённые улиты, которые заслуженно называют лучшими в своем сегменте. А пользуетесь ли вы подобными улитами?

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

Преимущества утилиты

В сравнении со стандартной утилитой копирования, которую предлагают разработчики ОС Windows, TeraCopy имеет ряд неоспоримых преимуществ, которые отражены в следующих пунктах:

TeraCopy

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

Основные характеристики ПО

Основными характеристиками, отличающими утилиту TeraCopy от ее аналога, установленного в ОС Виндовс, являются:

  1. Все файлы, копированные или перенесенные при помощи этой утилиты, по завершению процесса, подвергаются проверке CRCсо следующим сравнением файлов.
  2. Может использоваться, как программа для быстрого копирования файлов на флешку.
  3. Использование специального буфера позволяет производить одновременное копирование нескольких партий файлов.
  4. Функция интегрирования в проводник позволяет заменить стандартную вордовскую утилиту.
  5. Утилита позволяет временно приостанавливать и возобновлять процесс копирования или перемещения.
  6. Приложение дополнено функцией пропуска файлов в процессе их обработки.
  7. Поддерживает Unicode, а также позволяет выполнять асинхронное копирование, значительно увеличивающее скорость процесса между двумя разными HDD.
  8. Приложение осуществляет проверку всех переносимым или копируемых файлов на идентичность и целостность.
  9. Изменения и улучшения в последних версиях TeraCopy
  10. Последние версии утилиты претерпели ряд позитивных изменений, значительно улучшивших работу программы. В первую очередь, это:
  11. Переводчик Google.
  12. Возможность прокрутки и фильтрации файлов и т.д.

TeraCopy

Бесплатно скачав программу TeraCopy, Вы убедитесь, что она станет незаменимым инструментом при работе с большим объемом файлов и вынужденных производить их систематическое копирование или перенос. Приложение позволит в максимально сжатые сроки выполнить работу без досадных заминок, присущих стандартному приложению в ОС Windows.

KillCopy

Несмотря на то, что программа KillCopy давно не поддерживается разработчиком и последняя версия была выпущена в 2006 году, эта маленькая утилита способна помочь системным администраторам, в чём я недавно убедился на практике.

Разработчик: Кононко Дмитрий. IT-шники должны знать своих героев.

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

Удобно встраивается в интерфейс Проводника в виде пунктов KillCopy Here, KillMove here в меню перетаскивания файлов и в виде пунктов KillCopy to, KillMove to в контекстом меню файлов и каталогов (по правой кнопке).

Есть у меня сервер с операционной системой Windows Server 2016. Сервер "обезопашен" сверху донизу, закрыт фаерволами, брэндмауэрами, политиками безопасности PCI DSS и ACL правилами доступа на сетевом оборудовании.

И вот понадобилось мне на этот сервер загрузить пару больших файлов, гигов так на десять. Единственный разрешённый способ загрузить на сервер файл — по RDP. Можно копи-пастом, а можно примонтировать при подключении свой локальный диск и скопировать файл с него.

Примонтировал диск, на сервере сетевой путь к нему \\tsclient\C. Первый файл нормально загрузился, а при загрузке второго на 75% зависло RDP соединение. И ещё раз, и ещё.

Прошло пол дня. Ребут не помог. Копи-паст не помог. Архивирование не помогло. Разбитие на мелкие файлы помогло частично, всё загрузилось, но распаковываться не захотелось. Это просто ЭПИК ФЭЙЛ какой-то! Ну почему в виндовом стандартном копировании нет поддержки докачки по сети после восстановления соединения?

Читайте также: