Я использую специальный скрипт Bash, работающий на компьютере с Linux, для массового копирования USB-накопителей, отформатированных в FAT32.
Мне нужно сохранить атрибуты файлов Windows, такие как «скрытый».
Я использую rsync
(или dd
с find
и mkdir
в более новой версии для принудительной синхронизации ввода-вывода для лучшей стабильности и оптимального использования полосы пропускания).
Я вслепую попробовал использовать ключи -X
и , которые, как говорят, сохраняют некоторые атрибуты файлов, но, похоже, они не работают для атрибутов файлов Windows.-A
rsync
Есть ли способ читать и записывать атрибуты файлов Windows в среде Linux?
Я мог бы применить их после копирования, если нет более простого способа.
Я не хочу dd
целую исходную файловую систему, потому что это будет ужасно неоптимизировано, особенно когда вам нужно записать сотни дисков. Иногда диски имеют емкость 16 ГБ, и на них всего несколько ГБ файлов - и глупый dd
копировал бы все 16 ГБ, что заняло бы слишком много времени для работы в продакшне.
Я поискал в Интернете, но, похоже, расширенные атрибуты Linux не имеют ничего общего с атрибутами файлов Windows, и я не нашел способа прочитать и записать эту информацию (или просто скопировать ее вместе с файлами).
решение1
Я могу придумать несколько способов справиться с этим.
Первый способ — использоватьMtoolsдля копирования файлов. Чтобы это сработало, вам нужноопределить «приводы»(скажем, A: для исходного диска, B: для целевого), тогда вы сможете скопировать все, сохранив атрибуты и временные метки, используя
mcopy -s -p -m a: b:
(не проверено).
Второй — постобработка атрибутов с помощью fatattr
(доступно в большинстве дистрибутивов). Он обрабатывает смонтированные файловые системы, поэтому вы копируете свои файловые системы так же, как вы это делаете сейчас, затем используете fatattr
для перечисления всех атрибутов FAT всех исходных файлов и анализируете их, чтобы указать, fatattr
как правильно установить атрибуты в целевых файлах.