Я оцениваю, подойдет ли Robocopy для моего скрипта резервного копирования, который будет выполнять резервное копирование только новых файлов с диска C (NTFS) на USB-накопитель (exFAT).
У меня есть эта команда, которую я запускаю. Она выполняет свою работу, но, похоже, происходит неправильное ведение журнала, когда местом назначения является съемный USB-накопитель, и он тоже отформатирован в exFAT. Эта проблема не возникает, если местом назначения является FAT или NTFS.
robocopy C:\Temp\F1 D:\F1 /XO /E /FFT /LOG:C:\Temp\robo.txt /NP /NDL /R:1 /W:3
В приведенной выше команде D: — это буква флеш-накопителя, а команда или файл .BAT всегда запускались от имени администратора в Windows 7 Ultimate 64.
Проблема возникает в случае 2, как описано ниже.
Случай 1 - см. скриншот журнала. Кажется, все правильно. Все скопированные имена файлов регистрируются, и статистика копирования правильная. 3 Файла скопированы.
Случай 2 - Я добавляю еще один файл в источник. Теперь он копирует только этот новый файл, но показывает все файлы в журнале, а статистика неверна. Он говорит, что скопировано 4 файла.
Этот тип непоследовательного ведения журнала происходит только тогда, когда местом назначения является флешка, отформатированная в exFAT. Никаких проблем с FAT или NTFS.
Операционная система - Windows 7 Максимальная 64.
Вопросы.
- Это какая-то проблема или ошибка в журнале Robocopy, когда местом назначения является флеш-накопитель exFAT?
- Если нет, то может быть я упустил какую-то опцию в команде, которая должна это исправить?
Буду весьма признателен за дополнительную ясность по этому вопросу.
Редактировать
Случай 3 — Никаких изменений, в файле журнала по-прежнему перечислены все 4 файла.
/FFT или его отсутствие не изменяют данные журнала.
Я проверил с помощью Free File Sync, оба каталога синхронизированы по размеру файла, временной метке и фактическому содержимому. Я думаю, что это не копирование, а все еще регистрация.
Редактировать 2
Я поместил 2 больших файла в источник вместе 312 МБ. Копирование на USB 2 флешки заняло 42 секунды. Журнал в порядке.
Теперь я снова запускаю команду. Она завершается за 0 секунд, но все еще регистрирует 2 файла, и статистика показывает, что 2 файла скопированы. Я уверен, что это невозможно с данными объемом 312 МБ на USB 2.0-флешке.
решение1
Версия Robocopy на моем Windows 76.1.7601.23403.
Эта версия Robocopy датируется 2009 годом. Она устарела на 10 лет.
Я попытался скопировать Robocopy с ПК с Windows 10 (64) на свой Windows 7 (64), но когда команда помещается в .BAT, возникает ошибка, сообщающая, что это недопустимое приложение Win32.
К сожалению, Windows 7отсутствуют определенные предпосылкитребуется для текущего исполняемого файла Robocopy, поэтому последний исполняемый файл нельзя просто скопировать из системы Windows 10:
Даже копирование из Windows 8 не сработает, поскольку базовые компоненты должны его поддерживать.
Robocopy — это всего лишь утилита, которая обращается к базовым компонентам файловой системы.
Мне не удалось воспроизвести эту проблему в моей системе Windows 10 1903, в которой установлена последняя версия Robocopy.
Нет сомнений, что проблема в журналах, а не в самом процессе копирования. Robocopy на самом деледелаетименно то, что и должно быть, просто сообщается неправильно.
Мгновенные копии, которые мы здесь видим, невозможны. Если копирование файла с одного тома на другой занимает 42 секунды в первый раз, то тот же процессне мочьво второй раз это займет 0 секунд!
Какие бы узкие места ни ограничивали скорость первоначального копирования файлов, они точно так же повлияют на последующие копии (т. е. на пропускную способность USB-порта и скорость записи на флэш-накопитель).
Это можно легко продемонстрировать, выполнив задание копирования, включающее относительно большой файл, и понаблюдав, сколько времени это займет, а затем удалив большой файл с целевого диска и повторно запустив то же задание. Последующие копии через двадругойобъемы займут примерно одинаковое время.
Расхождения в журналах:
Зеленый = правда.
Красный = ложь.
Просто чтобы прояснить, что показано в первом зеленом поле: я добавил "Нет 100% нового файла" строки, показывающие, где журнал был правильным, чтобы показать пустое место. Были ли эти копии файловДействительното рядом с каждым успешно скопированным файлом будут отображаться «100%» и «Новый файл».
Этих копий файлов никогда не было. ОП мог бы поместить туда 20 ГБ данных, и Robocopy все равно сообщил бы о мгновенной передаче!
Заключение:
Автор статьи не сможет обновить свою версию Robocopy, поскольку Windows 7 не может использовать ничего новее версии 2009 года.
Его непосредственные варианты — использовать XCOPY или какую-либо другую утилиту для копирования файлов.
Когда автор сообщения в конечном итоге обновится до более новой версии Windows, например, Windows 10, у него будет последняя версия Robocopy, в которой эта старая ошибка будет исправлена, и этот сбой в ведении журнала больше не будет возникать.
решение2
Известно, что Robocopy вызывает проблемы при передаче файлов между различными файловыми системами, например, из-за того, что NTFS использует 64-битную временную метку, а ex FAT использует 3 отдельных поля для хранения временной метки, один из которых представляет собой часовой пояс для времени UTC.
И есть несколько примеров, когда сводка не отображает правильную информацию.например здесь. Я бы предположил, что расчет сводки (грубо говоря) не интегрирован напрямую в процедуру копирования, так что это какая-то ошибка. Но я не нашел ни одного "официального" документа, подтверждающего это. Вы также можете проверить, что на самом деле верно, журнал или сводка.