Когда я копирую файлы из раздела ext3 в раздел fat32 с помощью cp:
cp -R /ext3/stuff /fat32/partition/
Я получаю недопустимые сообщения с аргументами для всех файлов с двоеточиями и знаками вопроса.
Есть ли способ заставить cp удалить лишние символы для целевой файловой системы?
редактировать: я снова проверил параметры cp, и если я не глуп, там ничего нет. Я уверен, что мог бы написать сценарий, но такое чувство, что должно быть более чистое решение!
источник
На основании сообщения Жиля я проверил следующий список:
Я пытался скопировать это на карту Android MicroSDHC с файловой системой vfat и уточнил
pax
команду, пока все не заработало. Этого может быть недостаточно для Windows и Unicode:Вы также можете использовать опцию -k, чтобы избежать перезаписей (из-за коллизий в именах файлов). Оба списка, которые я дал в комментарии, отличались от поведения Linux vfat.
источник
Я получил «Неверный аргумент» при копировании с помощью cp -r source usbstick и обнаружил, что причиной было имя исходного файла, заканчивающееся пробелом. Удаление пробела очистило сообщение. Кстати, файл с неправильным именем оказался в каталоге программ почтовой программы.
источник
У меня просто была причина, чтобы сделать это, и хотя
pax
ответ на основе был хорош, он все еще сталкивался с проблемами с символами с акцентом.Поэтому я обнаружил, что проще использовать
tar
и заставить его заменить все недопустимые символы подчеркиванием:Несомненно, можно придумать лучший список разрешенных символов, чем приведенный выше, но это работает.
источник
Прочитав ответы на этот очень интересный вопрос и поэкспериментировав с SD-картой для Android (exfat) и автомобильной развлекательной системой (vfat), я придумал этот маленький скрипт bash.
Он принимает пункт назначения (точку монтирования) в качестве аргумента и использует
find
для поиска всех файлов в моем музыкальном хранилище.Для каждого пути к файлу он вычисляет путь назначения и имя файла, добавляя место назначения и заменяя любой символ, вызывающий оскорбления, подчеркиванием
_
. Я использую белый список символов (буквы, цифры,-
,/
,.
,.
(
,)
И_
) , чтобы удалить любые нежелательные знаки препинания.В зависимости от локали, это оставит акцентированные буквы в пути и имени файла, что нормально для современных файловых систем FAT, как кажется.
Для каждого пути и имени файла назначения каталоги создаются по мере необходимости
mkdir -p
, затем файл копируется, если он уже не существовал.Обратите внимание на
"
символы в кавычках в разных местах, они необходимы, чтобы пути и имена с пробелами в них не разрывались.источник