LinuxでファイルをコピーするときにWindowsファイル属性を保持するにはどうすればよいですか?


8

Linuxマシンで実行されているカスタムBashスクリプトを使用して、FAT32形式のUSBドライブを大量に複製しています。

「非表示」などのWindowsファイル属性を保持する必要があります。

私が使用rsync(またはddfindし、mkdir優れた安定性と最適な帯域幅の使用のためにI / Oの同期を強制するために、新しいバージョンでは)。

私は盲目的にしようとした-X-Aのためのスイッチrsync、いくつかのファイル属性を保持すると言われているが、彼らは、Windowsのファイル属性のために仕事にいないようです。

Linux環境でWindowsファイル属性を読み書きする方法はありますか?

簡単な方法がない場合は、コピー後に適用できます。

dd特に何百ものドライブを書き込む必要がある場合は、ソースファイルシステム全体が最適化されていないため、完全にソースファイルシステムにしたくありません。ドライブの容量は16 GBで、その上に数GBのファイルしかない場合があります。また、ダムddはすべての16 GBをコピーし、これが本番環境で機能するまでに時間がかかります。

私はウェブを検索しましたが、Linuxの拡張属性はWindowsのファイル属性とは何の関係もないようで、この情報を読み書きする方法(または単にファイルと一緒にコピーする方法)が見つかりませんでした。


保存したいのは「非表示」だけですか、それとも他にありますか?
M. Becerra 2017年

2
面白い。Linux VFATドライバーは、書き込み可能な方法でこれらの属性をエクスポートしますか?
ilkkachu 2017年

@ M.Becerra-現在、「非表示」属性のみが必要です。将来、おそらく他の属性は必要なくなるでしょう。
unfa

@StephenKitt-ソースファイルシステムから読み取り、その情報を複製された新しいファイルシステムに転送できるようにする必要があります。この問題をオーバーライドする非常に大雑把な方法は、ソースファイルシステムをゼロで埋め(空のスペースを空にするため)、圧縮されたddイメージを作成し、疎な部分をスキップして新しいドライブに書き込み、空の部分を書き出さないようにすることでしょう。画像。これは、ビットブルートフォースだと私はそれがに匹敵する性能がないだろうと思いますrsyncか、手動find/ mkdir/ dd私が今使用して操作を。
unfa

1
@ilkkachuはい、あります。FAT属性の取得と設定に使用できる2つのioctlがあります。fatattrこれらを使用したツールの1つの実装については、を参照してください。
スティーブンキット2017年

回答:


1

これを処理する方法はいくつか考えられます。

1つ目は、Mtoolsを使用してファイルをコピーすることです。これを機能させるには、「ドライブ」定義する必要があります(たとえば、A:ソースドライブ、B:ターゲット)、すべてをコピーし、属性とタイムスタンプを保持して、

mcopy -s -p -m a: b:

(テストされていません)。

2つ目は、fatattr(ほとんどのディストリビューションで使用可能な)を使用して属性を後処理することです。マウントされたファイルシステムを処理するため、現在と同じ方法でファイルシステムをコピーし、それを使用fatattrしてすべてのソースファイルのすべてのFAT属性をリストし、それを解析fatattrしてターゲットファイルに適切に属性を設定するように指示します。


私は問題を持っていたmcopy、それはGCCのエラー「が検出スタックスマッシング」を上げフォルダ「システムボリューム情報」をコピーしようとして墜落しました。なので、を使ってみますfatattr
unfa

FAT32ファイルシステムに「システムボリューム情報」がありますか?NTFSだけだと思っていました。
Stephen Kitt 2017年

もう一度確認する必要があります。
unfa
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.