Я пытался скопировать том архива с одного сетевого ресурса на другой. Поскольку большинство из этих файлов - файлы Mac, я использую Mac Terminal для этого. Я перепробовал каждую комбинацию cp, rsync, and ditto
, которую мог придумать.
Проблема заключается в том, что многие из этих файлов имеют похожее имя, и время от времени я сталкиваюсь с тем, в имени которого есть символ тильды. В зависимости от того, какой вариант cp or rsync
команды я использую, когда он сталкивается с этим, он либо терпит неудачу, заявляя, что файл уже существует, либо пропускает файл вместе с тильдой и продолжает процесс.
Например: «28910 BP Umba Show.SIT» считается идентичным «28910B ~ 1.SIT» и поэтому не будет копироваться в новое местоположение архива.
Любая помощь с благодарностью, заранее спасибо.
28910B~1.SIT
и Mac не должен считать его таким же, как28910 BP [anything]
. Возможно, мешает удаленная файловая система / ОС? Я бы попытался перетащить хотя бы тестовую папку, используя Finder, на свой Mac, а затем вернуться на новый сервер, чтобы посмотреть, что произойдет.Ответы:
Имя файла
28910B~1.SIT
выглядит как сокращенное имя файла MS-DOS, которое содержит более 8,3 символов (длинные имена файлов).Важно отметить, что в Windows 2000 и длинное имя, и сокращенное имя 8.3 были сохранены (файл имел оба имени)
Например,
28910 BP Umba Show.SIT
автоматически сокращаются до28910B~1.SIT
и дубликатов увеличиваются (28910B~2.SIT
,28910B~3.SIT
,28910B~4.SIT
и т.д.) Вы можете прочитать больше об этом именовании на Microsoft Tech NetworkЕсть большая вероятность, что это обман одного из ваших файлов, но единственный способ узнать наверняка - открыть оба и проверить.
Из комментария:
Он не может игнорировать тильду - он есть, и с этим нужно разобраться; Что касается macOS, два файла имеют одинаковые имена (потому что они есть).
Чтобы скопировать оба файла, но не перезаписать тот, который уже находится в папке назначения, вы можете выполнить быструю проверку в своей команде, чтобы увидеть, существует ли файл в цикле for / do:
Эта команда проанализирует ваш исходный каталог, проверит, существует ли файл в целевом каталоге, и если он это сделает, скопирует файл, добавив текущее время в секундах (чтобы не было многократных повторов); если нет дублирования, он просто копирует файл.
источник