sudo rsync -aはmtimeを保存しません

sudo rsync -aはmtimeを保存しません

繰り返しクラッシュするUbuntu 16.04をデバッグするために、/var/logをHDDから外部USBメディアにバックアップしたいと思います。 Live OS(Ubuntu 16.04)を実行しており、--archiveオプションを使用しています。

$ sudo rsync --archive /media/ubuntu/2f1ea741-cc93-4b0e-ad74-1e21d56d27a9/var/log/* /media/ubuntu/transcend/DebuggingSystemCrash@box3/var_log_2016-07-04-0939

予想される動作

アーカイブモードは次のようになる-rlptgoDため、変更時間を保存する必要があります。

-t, --times                 preserve modification times

観察された行動

ファイルのタイムスタンプ(atimeそして時間はいいえ保存中です。スクリーンショットをご覧ください。フォルダ変更時間はい保存してください。

スクリーンショット、左はソース、右はターゲット

ソースとターゲットの両方がインストールされているため、この問題は以下に関連する可能性があります。ソースツリーにマウントポイントがあるときにファイルのタイムスタンプを保存するようにrsyncに指示する方法

私も以下を読みました。

私は何を逃したことがありませんか?

修正する

いいえsudoでrsyncを実行すると、mtimeに関して予想される動作が生成されますが、一部のファイルはスキップされます。

rsync 出力比較: $ sudo rsync -a 対 $rsync -a

ベストアンサー1

との違いは、次の抜粋sudoによって発生する可能性があります。ドキュメント/ファイルシステム/vfat.txt。 (ターゲットファイルシステムの種類と^ Wfilesystemディレクトリを所有している人を知る必要があります。vfatこの場合はマウントオプションによって決まりますvfat)。

とにかく、ファイルシステムの種類の重要性を示すため、これを公開しています。全体的な結論はLinuxでFATを使用するのは痛いです(FATのrsyncにも特別な問題があります)。

リストされている問題の少なくとも1つが、他のデフォルト値(おそらくudisks手動mountコマンドではなくGUIで使用される値)で解決されていると確信しています。いずれにせよLinuxオペレーティングシステムの一部をFATにコピーし、ファイルメタデータに特定の結果が必要な場合は時間を無駄にしています。(タイムスタンプ)またはファイル名。この場合、デフォルトのLinuxファイルシステムを使用する必要があり、可能であればソースファイルシステムと同じタイプを使用する必要があります。

または、単一のファイルをコピーする代わりにファイルデフォルトのLinuxツール(tarZipファイルなど)を使用していますが、バックアップ用に設計されていますLinux* nixファイル - 名前と最も一般的なメタデータ。例えばtar -c -f out.tar input-directory/(圧縮省略)です。

LinuxでFATタイムスタンプを設定するためのリファレンスドキュメント

allow_utime=### -- This option controls the permission check of mtime/atime.

                  20 - If current process is in group of file's group ID,
                       you can change timestamp.
                   2 - Other users can change timestamp.

                 The default is set from `dmask' option. (If the directory is
                 writable, utime(2) is also allowed. I.e. ~dmask & 022)

                 Normally utime(2) checks current process is owner of
                 the file, or it has CAP_FOWNER capability.  But FAT
                 filesystem doesn't have uid/gid on disk, so normal
                 check is too unflexible. With this option you can
                 relax it.

避けるべきコミュニティ検証やその他の潜在的な問題

だからブログ投稿「FAT32インストール所有者だけがファイルタイムスタンプを設定できます」という確認が見つかりました。私はこれをデザインバグと呼びたいです(ルートもこれができるはずです)。参照文書にはほとんどそのように記載されていますが、それに対するパッチを送信するにはあまりにも怠惰です。

ブログでは、ファイル/ディレクトリの違いの説明も提供しています。残念ながら、これはあなたが描いたものとは正反対のようです。 以下に説明するファイル/ディレクトリの違いにより、一般ユーザーがディレクトリでタイムスタンプを正しく設定できないようにする必要があると思います。一方、あなたが示しているのは、ルートの場合、ディレクトリではタイムスタンプを正しく設定できますが、ファイルではタイムスタンプを設定できません。正しいタイムスタンプを設定してください。

私の考えでは、これは--modify-window=1rsync関連の問題の解決策です。したがって、cpファイルのコピーを使用すると、異なるデータポイントを取得できます。

FAT32 マウントポイントの所有者であっても、ディレクトリ時間を安定して設定できません。

これで、元のファイルのタイムスタンプを正しくコピーできますが、すべてのディレクトリ変更時間がrsyncコマンドを実行した時刻に設定されていることがわかりました。これはまったく欲しいものではありません。クイックGoogle検索により、この問題に関するフォーラム投稿が公開されました。http://ubuntuforums.org/showthread.php?t=886048

このフォーラムの記事では、rsyncが異なると見なす前に、ファイルとディレクトリの時間がどれだけ一致する必要があるかについて1秒を提供する「--modify-window = 1」オプションを追加することを提案します。一部では、これは元のディレクトリタイムスタンプが正しく維持されると言います。

おすすめ記事