Estou usando um script Bash personalizado em execução em uma máquina Linux para duplicar em massa unidades USB formatadas em FAT32.
Preciso preservar os atributos de arquivo do Windows, como "oculto".
Eu uso rsync
(ou dd
com find
e mkdir
na versão mais recente para forçar a sincronização de E/S para melhor estabilidade e uso ideal da largura de banda).
Eu tentei cegamente -X
e -A
mudei para rsync
, que supostamente preserva alguns atributos de arquivo, mas eles não parecem funcionar para atributos de arquivo do Windows.
Existe alguma maneira de ler e gravar atributos de arquivos do Windows em um ambiente Linux?
Eu poderia aplicá-los depois de copiar se não houvesse uma maneira mais fácil.
Não quero dd
um sistema de arquivos de origem inteiro, porque isso não será otimizado, especialmente quando você precisar gravar centenas de unidades. Às vezes, as unidades têm 16 GB de capacidade e apenas alguns GB de arquivos nelas - e um idiota dd
copiaria todos os 16 GB, demorando muito para que isso funcionasse na produção.
Pesquisei na web, mas parece que os atributos estendidos do Linux não têm nada a ver com os atributos de arquivo do Windows e não encontrei nenhuma maneira de ler e gravar essas informações (ou apenas copiá-las com os arquivos).
Responder1
Posso pensar em algumas maneiras de lidar com isso.
A primeira é usarMtoolspara copiar os arquivos. Para que isso funcione, você precisariadefinir “unidades”(digamos A: para a unidade de origem, B: para o destino), então você poderá copiar tudo, preservando atributos e carimbos de data e hora, usando
mcopy -s -p -m a: b:
(não testado).
A segunda é pós-processar os atributos usando fatattr
(que está disponível na maioria das distribuições). Ele lida com sistemas de arquivos montados, então você copiaria seus sistemas de arquivos da mesma maneira que faz atualmente, depois usaria fatattr
para listar todos os atributos FAT de todos os arquivos de origem e analisaria isso para instruir fatattr
a definir os atributos apropriadamente nos arquivos de destino .