古いサーバーの一部のデータを新しいサーバーにインストールしています。
私は長年にわたって古いサーバーを使用してきたため、多くのレガシーデータがあり、特にレガシーユーザーとグループ名が最も多いです。
抽出時に、tarは識別子を代替手段として使用するか、現在のユーザーを最後の手段として使用して、ユーザーとグループの情報を名前で一致させることに最善を尽くします。
私がやりたいことは、抽出する前にすべてのユーザーとグループが存在することを確認することです。これにより、すべてのファイルが正しいIDを取得します。
私が考える最善の方法は、tarファイル内のすべてのユーザーとグループ名を一覧表示することです。そのコマンドを使用してすべてのファイルを一覧表示できることを知っていますが、tar tvf backup.tar
正しい2つの名前を抽出する方法を見つける必要があります。
このオプションを使用するよりも簡単な方法があるかどうか疑問に思いますtv
。一部のツールまたはコマンドラインオプションはユーザー名とグループ名のみを抽出するため、これを使用してsort -u
リストを一意の項目に絞り込むことができます。
そんな機能ご存知の方ですか?
ベストアンサー1
興味深い質問です。マニュアルページを少し見て(「user」を検索し、結果が出ない場合は「owner」を検索)、次のことを行う必要があります。
tar xf thetarball.tgz --to-command='sh -c "echo $TAR_UNAME $TAR_GNAME"' | sort | uniq -c
明らかに、必要に応じてスクリプトを変更します。一部のユースケースでは、名前の代わりにおよび$TAR_UID
が必要になる場合があります。$TAR_GID
--owner-map
また、との--group-map
オプションを読むことをお勧めしますtar
。すべてのユーザーとグループを事前に作成するよりも、ユースケースに大きな助けになり、はるかに簡単なようです。