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