Come posso preservare gli attributi dei file di Windows durante la copia di file su Linux?


8

Sto usando uno script Bash personalizzato in esecuzione su una macchina Linux per duplicare in massa unità USB formattate FAT32.

Devo preservare gli attributi di file di Windows come "nascosto".

Uso rsync(o ddcon finde mkdirnella versione più recente per forzare la sincronizzazione I / O per una migliore stabilità e un utilizzo ottimale della larghezza di banda).

Ho provato cieca -Xe -Ainterruttori per rsync, che si dice per preservare alcuni attributi di file, ma loro non sembrano funzionare per gli attributi di file di Windows.

Esiste un modo per leggere e scrivere gli attributi dei file di Windows in un ambiente Linux?

Potrei applicarli dopo la copia se non c'è modo più semplice.

Non voglio ddun intero filesystem di origine, perché non sarà ottimizzato, soprattutto quando è necessario scrivere centinaia di unità. A volte le unità hanno una capacità di 16 GB e solo pochi GB di file su di esse - e un muto ddpotrebbe copiare tutti i 16 GB, impiegando troppo tempo affinché questo funzioni nella produzione.

Ho cercato sul Web, ma sembra che gli attributi estesi di Linux non abbiano nulla a che fare con gli attributi dei file di Windows e non ho trovato alcun modo per leggere e scrivere queste informazioni (o semplicemente copiarle con i file).


"Nascosto" è l'unico che vuoi conservare o ce n'è un altro?
M. Becerra,

2
Interessante. Il driver VFAT di Linux esporta persino quegli attributi in un modo che potrebbe essere scritto?
ilkkachu,

@ M.Becerra - al momento ho solo bisogno dell'attributo "nascosto" e probabilmente non ne avrò bisogno in futuro.
unfa,

@StephenKitt - Devo essere in grado di leggerlo dal filesystem di origine e trasferire tali informazioni sul mio nuovo filesystem duplicato. Immagino che un metodo molto grezzo per ignorare questo problema sarebbe quello di riempire zero il filesystem di origine (per pulire lo spazio vuoto), creare un'immagine dd compressa e scriverla sulle nuove unità saltando parti sparse per evitare di scrivere parti vuote del Immagine. È un po 'bruta e suppongo che non avrebbe prestazioni paragonabili rsynco manuali find/ mkdir/ ddoperazione che uso in questo momento.
unfa

1
@ilkkachu sì, ci sono due ioctls che possono essere usati per recuperare e impostare gli attributi FAT. Vedere fatattrper un'implementazione di uno strumento che utilizza questi.
Stephen Kitt,

Risposte:


1

Posso pensare a un paio di modi per gestirlo.

Il primo è usare Mtools per copiare i file. Affinché funzioni, dovresti definire "unità" (ad esempio A: per l'unità di origine, B: per la destinazione), quindi dovresti essere in grado di copiare tutto, preservando attributi e timestamp, usando

mcopy -s -p -m a: b:

(non testato).

Il secondo è postelaborare gli attributi usando fatattr(che è disponibile nella maggior parte delle distribuzioni). Gestisce i file system montati, quindi copieresti i file system nello stesso modo in cui lo fai attualmente, quindi utilizzi fatattrper elencare tutti gli attributi FAT di tutti i file di origine e analizzarli per indicare fatattrdi impostare gli attributi in modo appropriato sui file di destinazione .


Ho avuto problemi con mcopy, si è arrestato in modo anomalo nel tentativo di copiare la cartella "Informazioni sul volume del sistema" generando un errore GCC "Rilevamento dello stack rilevato". Quindi proverò ad usare fatattr.
unfa,

Hai "Informazioni sul volume del sistema" su un file system FAT32? Pensavo fosse solo una cosa NTFS.
Stephen Kitt,

Dovrei ricontrollare.
unfa,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.