アクセス許可についても同様の質問が寄せられていることは知っていますが、各ファイルとディレクトリのアクセス許可とファイル所有者を保持する圧縮またはアーカイブの形式はどれですか?
tar.gz
を検討していました フォーマットですが、これは正しいでしょうか?
37GBのファイルとディレクトリを別のサーバーに移動する必要があり、非圧縮時にすべてがまったく同じである必要があります。
承認された回答:
従来のアーカイブツールtarとcpioはどちらも、所有権とUnix権限(ユーザー/グループ/その他)、およびタイムスタンプ(cpioを使用する場合は必ず-m
を渡す)を保持します。 抽出するとき)。難解な構文¹が気に入らない場合は、POSIX置換pax(pax -w -pe
)を使用できます。 )これらはすべて、非圧縮のアーカイブを出力します。アーカイブをgzip
などのツールにパイプします またはxz
それを圧縮します(GNU tarには圧縮を行うオプションがあります)。ユーザーとグループは名前で識別されます。 GNUtarにはオプションがあります。
これらのツールはいずれも、ACL、機能、セキュリティコンテキスト、その他の拡張属性などの最新の機能を保持していません。
一部のバージョンのtarはACLを保存できます。 ACLを保持し、ファイルをバックアップするために何を使用するかを参照してください。 GNU tarを使用して、--acls
を渡します アーカイブの作成時と抽出時の両方。
mikeservによって提案されているように、squashfsファイルシステムは、機能とSELinuxコンテキストを含む拡張属性を格納しますが、ACLは格納しません。 (古すぎないバージョンが必要です。)ACLとセキュリティコンテキストの両方がある場合は、squashfsファイルシステムを使用し、getfacl -R
を実行してACLを保存できます。 元のファイルシステムのルートで、setfacl --restore
を使用してファイルを抽出した後にそれらを復元します 。
ACL、サブセカンドタイムスタンプ、拡張属性、ファイルシステム固有の属性など、すべてを完全に保存したい場合は、ファイルシステムのクローンを作成できます。このアプローチの欠点は、圧縮されたコピーを簡単に直接書き込むことができないことです。ファイルシステムのクローンを作成する最終的な方法は、ブロックデバイスをコピーすることです。もちろん、これは空のスペースをコピーするという点で無駄です。または、すべてのファイルを保存するのに十分な大きさのファイルシステムを作成し、cp -a
を使用します cp
を使用 GNUcoreutilsからファイルをコピーするコマンド。 GNU cpは、拡張属性やACLなどの従来とは異なる機能を含むすべてをコピーするのに非常に優れています。
¹これは本当に誇張されていますが。