Пытаюсь изучить Robocopy для базового плана резервного копирования и попробовал это в bat-файле:
@echo off
echo "Hello World!"
robocopy C:\Testfolder Z:\Testfolder
pause
где Z: — сетевой диск (внешний USB-накопитель, подключенный к USB-порту маршрутизатора)
В папке C:\Testfolder всего два файла — 02.jpg и 02-03.jpg.
При первом запуске был создан Testfolder на Z: и скопированы оба изображения.
Любопытно, что произойдет, я запустил его снова - на этот раз сообщения на экране говорят, что он скопировал 02.jpg, но пропустил 02-03.jpg. То же самое и при повторном запуске.
Почему это так?
решение1
По умолчанию robocopy копирует только те файлы, которые, по его мнению, были изменены с момента последнего запуска. Вы можете убедиться в этом, посмотрев статус в конце копирования. Должно быть указано, что Files Skiped равно 1. Возможно, вам придется включить эту /v
опцию, чтобы получить более подробную информацию.
Поскольку вы копируете на сетевой диск, подключенный к вашему маршрутизатору, есть большая вероятность, что есть ошибка времени файла, и это заставляет robocopy видеть другую дату и время на одном из файлов назначения. Проблемы с атрибутами файлов распространены в общих папках samba на базе Linux, например, что, скорее всего, используется вашим маршрутизатором. Это объясняет, почему он продолжает повторно копировать один файл, если он не изменился. Вы можете попробовать параметр, /timfix
чтобы посмотреть, исправит ли он время в файлах и прекратит ли повторно копировать неизмененные файлы.
Если вы хотите, чтобы robocopy копировал одинаковые и неизмененные файлы, добавьте эту /is
опцию.
Более подробная информация здесь:https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/robocopy