web-dev-qa-db-ja.com

tarの使用中にファイルの所有権を維持する方法

現在、サーバー用の自動バックアップスクリプトを作成しています。スクリプトでUNIX tarコマンドを使用して、コードリポジトリをアーカイブしています。

私のPerlスクリプトでは、次のようにtarコマンドを使用しています。

system("tar -jcpf $destPath/$string.tar.bz2 -X $exclusionFile $targetPath");

tarアーカイブを抽出するときにファイルの所有権を保持したいのですが。でtarアーカイブの内容を一覧表示しようとしました

tar -jtvf

リストには各ファイルの正しいファイル所有権が含まれていますが、アーカイブを抽出すると、ファイル所有権は現在のユーザーに変更されます。

tarアーカイブを抽出し、各ファイルの元のファイルの所有権を維持する方法はありますか?

16
DontCareBear

オプション--same-owner to tar while extracting

tar --helpは言う:

   --same-owner
          create extracted files with the same ownership
13
devnull

tar -xスイッチで-pを実行している間、ファイル属性を「保持」したいとします。望ましい結果を得るためには、これをrootにする必要があるのは明らかです。

         -p, --insecure, --preserve-permissions
         (x mode only) Preserve file permissions.  Attempt to restore the
         full permissions, including owner, file modes, file flags and
         ACLs, if available,

多くのPOSIXシステムはpaxの代替として機能するcpiotarも出荷しています。

5
G. Cito