У меня есть внешний USB-накопитель, где некоторые имена файлов содержат ":", например Screenshot-08-09-12 -08: 10: 45.png (Старые скриншоты). Я могу скопировать эти файлы на жесткий диск своего компьютера, но я не могу скопировать их обратно на внешний жесткий диск, так как он автоматически переименовывается приложением файлов. Команда cp в терминале возвращает ошибку с недопустимым аргументом.
Я использую этот диск в Ubuntu 20.10, а также в LinuxMint 20. Как я могу скопировать такой файл обратно на внешний жесткий диск без переименования?
Я понимаю, что функция переименования таких имен файлов была реализована для работы с файловыми системами, которые поддерживают только именование файлов Microsoft.
Тип файла внешнего диска: NTFS (Тип раздела: NTFS / exFAT / HPFS)
Я не знаю, как файл был сохранен на жесткий диск в первую очередь как символ двоеточия (:
), зарезервированный в NTFS. Я полагаю, что при копировании файла в Ubuntu или Mint имя файла остается «как есть», так как они могут без проблем справиться с двоеточием в имени файла.
Если копирование их обратно на жесткий диск в формате NTFS работает в Mint, возможно, у вас есть «посредник» переводит имя файла так, чтобы оно было совместимо с NTFS. В соответствии с предложением этого вопроса StackOverflow вы можете попробовать использовать символы Unicode, совместимые с NTFS и визуально напоминающие двоеточие.
Если бы вы могли предоставить точное сообщение об ошибке, которое вы получаете при запуске cp
, а также точную команду, вызывающую это, я, возможно, смогу дать дальнейшие указания.
В общем, попробуйте использовать другой символ Unicode вместо двоеточия, поскольку он «зарезервирован» в файловой системе NTFS.
Я описываю, как это работает в Ubuntu, когда файловые системы источника и цели являются файловыми системами Linux, например ext4, которая является стандартной файловой системой Ubuntu. (Другие [не связанные с Linux] файловые системы могут вызвать проблемы.)
У меня работает копирование файлов с двоеточием в имени с использованием cp
при цитировании имени файла в одинарных или двойных кавычках.
Пример: если вы хотите сохранить имя файла
cp 'file: name' target-directory
или
cp "file: name" целевой-каталог
Пример: при желании вы можете изменить имя файла
cp 'file: name' target-directory / filename
и это может помочь, если целевая файловая система не принимает двоеточие в имени файла.
Редактировать 1:
Я могу подтвердить, что у меня работает запись файла с двоеточием в имени файла в файловая система NTFS. Это заставляет меня думать, что у вас проблемы либо с параметрами монтирования, либо с файловой системой.
Если проблема связана с параметрами монтирования (владение и / или разрешения), возможно эта ссылка может помочь.
Также возможно, что файловая система загрязнена (была закрыта без очистки буферов) или повреждена каким-либо другим образом. В таких случаях Linux часто по умолчанию монтирует только для чтения. Вы можете попытаться восстановить файловую систему, и файловые системы Microsoft должны быть восстановлены с помощью Windows.
Редактировать 2:
См. Также следующую ссылку, в которой спрашивается, как запретить определенные символы (например, двоеточие) в именах файлов, чтобы они корректно работают в Windows (это не то же самое, что Linux хранит и использует NTFS).
Заставить Linux запрещать двоеточия в именах файлов на разделах NTFS
# Creating a mount-point
mkdir Test
# Creating a dummy file to be transferred to the NTFS-partition
touch file:test.txt
# Mounting the external drive on the mount-point
sudo mount -t ntfs -o utf8 /dev/sdc1 ./Test
# Copying file
cp file\:test.txt Test