
tar コマンドの「p」オプションを使用して、いくつかのデータをバックアップする必要があります。問題は、このデータを復元する場所にはすべて同じユーザーがいるが、それらのユーザーの ID が異なる可能性があることです。これは tar に何らかの違いをもたらしますか、それともユーザー名によって権限が正しく復元されますか?
答え1
tar
権限は、関連付けられた文字列ではなく、UID と GID に基づいて記録されます。したがって、あるサーバーの UID が 3300 で、それが 'bob' にリンクされている場合、新しいサーバーでは、ファイルは UID 3300 を持つユーザーによって所有されます。
UNIX 上の仮想のすべて (すべてと言いたいところですが、100% 確実とは言えません) は UID:GID 値を使用します。これは、実際にファイルシステム レベルで保存される値だからです。名前は、passwd ファイル内での単純な検索にすぎず、基礎となるチェックは数値を使用して行われます。
答え2
これまでの回答を要約し、いくつかの重要な情報を追加します。
アーカイブを作成する際、
tar
ファイルのユーザーIDとグループIDは常に保存されます。ない限り--owner=NAME
、でそれ以外の場合は指定されます--group=NAME
。どちらの場合でも、各ファイルには必ず関連付けられた数値ユーザーおよびグループ ID。GNU
tar
、そしておそらく他のバージョンのtar
、またユーザーとグループを保存する名前--numeric-owner
が使用されない限り、bsdtar
ユーザー名とグループ名もデフォルトで保存されますが、--numeric-owner
オプションがサポートされていませんでした。作成バージョン3.0までのアーカイブ(抽出するアーカイブはずっと前からあります。として抽出する場合通常ユーザー、すべてのファイルはいつもユーザーが所有する必要があります。ファイルを抽出するということは、ファイルシステム上に新しいファイルを作成することを意味し、通常のユーザーはファイルを作成して他のユーザーに所有権を譲渡することはできないため、これは変わりません。
抽出する場合根は、
tar
デフォルトで抽出されたファイルの所有権を復元します。ない限り--no-same-owner
が使用され、ルート自身に所有権が与えられます。GNU tar、bsdtar、およびおそらく他のバージョンのでは
tar
、所有権の復元はユーザー(およびグループ)によって行われます。名前その情報がアーカイブにある場合そして宛先システムに一致するユーザーが存在する場合。存在しない場合は、IDで復元します。--numeric-owner
オプションが指定されている場合は、ユーザー名とグループ名は無視され、IDが使用されます。どちらの場合でも、数値IDが使用されると、一致するユーザーとグループはないシステム内に存在する必要があります。権限とタイムスタンプもアーカイブに保存され、オプション
--no-same-permissions
やが--touch
使用されない限り、デフォルトで復元されます。ユーザーが抽出すると、ユーザーumask
の減算されたが使用されない限り、権限から除外されます--same-permissions
。--preserve-permissions
は--same-permissions
エイリアスであり、同じ機能を持ちます-p
これが問題の解決に役立つことを願っています! :)
答え3
2 つのシステム間でファイルを転送する場合、rsync はデフォルトで、両端のユーザー名を調べて、uid ではなくユーザー名で権限を設定します。ユーザーがいずれかのシステムに存在しない場合にのみ、特に指示しない限り、uid を使用してコピーされます。
答え4
GNU tarの--same-ownerオプションを使用します。http://www.gnu.org/software/tar/manual/html_section/Attributes.html