tar 1.26と1.27.1の両方で次の動作を観察します。
$ mkdir a b a/diffowner
$ sudo mkdir b/diffowner
$ sudo chmod a+w b/diffowner
$ echo foo > a/diffowner/foo
$ tar -C a -cvf test.tar diffowner
diffowner/
diffowner/foo
$ tar -C b -xvf test.tar diffowner
diffowner/
diffowner/foo
tar: diffowner: Cannot utime: Operation not permitted
tar: diffowner: Cannot change mode to rwxr-xr-x: Operation not permitted
tar: Exiting with failure status due to previous errors
したがって、ここでやろうとしているのは、既存のディレクトリ構造にtarファイルを抽出することです。ここでは、関連するすべてのディレクトリの所有者ではありませんが、すべてのディレクトリに対する書き込み権限があります。実際、それらはグループ間で共有されます。
私はタイムスタンプを気にしません、そして、私は許可がすでに正しいはずであると信じています。私はこれを通常のユーザーとして実行している--preserve-permissions
ので、そう言われない限りはしようとしてはいけません。本当に心配なのは終了ステータスです。これをスクリプトで使用し、実際の抽出が正常に機能したかどうかを知りたいと思っています。
ディレクトリのアクセス許可を設定しないように、すぐにも遅延もしない tarのオプションはありますか?それに失敗すると、他の解決策を提案します。今、私は一時ディレクトリに抽出rsync
し、既存のツリーにデータを移動するために使用することを考えています。しかし、おそらくあなたはあまりハックのないアプローチを知っています。
1
抽出ではなくtar作成時にこれを行う方法があるかどうか疑問に思います。
—
ロイTruelove