Иногда при копировании с помощью xcopy вы можете натолкнуться на ошибку "Insufficient memory". Я такую ошибку увидел, когда стал разбираться с размером бэкапа сайта. Оказалось, что в какой-то момент времени бэкап сломался из-за этой ошибки.
Несмотря на то, что текст ошибки переводится как "Недостаточно памяти", к оперативной памяти ошибка не имеет отношения. На сайте Microsoft подсказывают, что дело в слишком длинном полном пути к файлу, если он превышает 254 символа.
И действительно, в одной из копируемых директорий я обнаружил несколько файлов с очень длинными названиями.
Один из способов избавиться от проблемы — не использовать файлы такой длины. Это чудесно, но не решает проблему. Не все файлы можно удалить или переименовать. И мы не застрахованы от появления новых файлов с большим названием. Да и с удалением таких файлов могут возникнуть проблемы:
Windows — удалить файл с длинным именем
Второй способ — вместо xcopy применить robocopy. Если вы ранее использовали дополнительные опции xcopy, то их придётся заменить на другие, которые поддерживает robocopy.
Удаляю старую команду:
xcopy %SourceDir% %FullBackupDir%
И вставляю новую:
robocopy %SourceDir% %FullBackupDir%
Вот мой новый скрипт для резервного копирования папки:
BAT скрипт для резервного копирования папки
Проверяйте бэкапы!