Проблема длинных путей в архиве (Режим копирования APBackup)

В Windows максимальная полная длина имени файла определена как MAX_PATH = 260 символов. В связи с этим в режиме копирования APBackup, при сохранении файлов с длинным путем, может возникать ситуация, при которой итоговая длина имени файла в архиве будет превышать данный предел.

Режим копирования в APBackup

При этом в APBackup задание будет прервано с одной из следующих ошибок:

Can not create destination file: [EID:3:Path not found...
Can not create destination file: [EID:206:The filename or extension is too long:...
Can not create destination file: [EID:3:The filename or extension is too long:...

Например, в задании происходит копирование директории C:\Documents and Settings\User\*.*
в архив с именем D:\Backup\Backup_2011\Daily_Backups\January\Profile\
При этом, например, исходный файл с длинным путем немного меньшим, чем 260 символов «C:\Documents and Settings\User\[210_symbols_path]\example.txt», будет скопирован в файл «D:\Backup\Backup_2011\Daily_Backups\January\Profile\Documents and Settings\User\[210_symbols_path]\example.txt», длинна пути для которого, будет превышать 260 символов. При этом задание в APBackup будет прервано с ошибкой.

Есть несколько путей избежать данной ситуации:

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

Для такого случая в APBackup предусмотрена опция на закладке [Source] — «Skip files with too long destination name».

Если включить данную опцию то при возникновении ситуации со слишком длинным именем файла в архиве APBackup запишет предупреждение в лог файл с именем файла источника и продолжит выполнение задания, пропустив данный файл. В этом случае задание будет выполнено, а имена пропущенных файлов будут записаны в лог APBackup. Кстати, APBackup может послать лог файл текущего задания по e-mail администратору после выполнения задания.

2. Другой путь заключается в сокращении пути результирующего файла в директории назначения. Можно сократить путь архива, т.е. в приведенном выше примере сократить путь «D:\Backup\Backup_2011\Daily_Backups\January\Profile\». Так же можно убрать опцию «Store full source path on copy» на закладке [Source].

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

В нашем примере сохранится «\Documents and Settings\User\»:

D:\Backup\Backup_2011\Daily_Backups\January\Profile\Documents and Settings\User\[210_symbols_path]\example.txt

Если данную опцию выключить то сохраняется путь только от директории источника, т.е. часть имени файла «\Documents and Settings\User\» сохраняться не будет:

D:\Backup\Backup_2011\Daily_Backups\January\Profile\[210 symbols path]\example.txt

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

Ссылки по теме:
MSDN: Maximum Path Length Limitation
APBackup: режимы создания резервной копии.