ファイル属性を保持しながらファイルをコピーする

ファイル属性を保持しながらファイルをコピーする

ファイルプロパティと親ディレクトリを維持しながら、/etc/binをフォルダにコピーしたいとします。 [ターゲットフォルダには、binフォルダだけでなく/ etc / binも含める必要があります。 ]

これは可能ですか? tarを使って圧縮して解凍するのは効率的ですか?

答え1

mkdir target/etc
cp -Rp /etc/bin target/etc/

または(GNUのみ)

mkdir target/etc
cp -a /etc/bin target/etc/

または

mkdir target/etc
rsync -aAX /etc/bin target/etc/

または(クラシックUNIX)

find /etc/bin | cpio -pm target

または(クラシックUnix、その他)

( cd / && tar -tf - etc/bin ) | (cd target && tar -xf - )

または(少数の人が聞いたようなPOSIXの代替)

mkdir target/etc
pax -rw -pe etc/bin target/etc/

これはすべて既存のUnixメタデータ(権限、タイムスタンプ1、所有権(rootとして実行する場合)2)を保存します。システムによっては、ACLや拡張属性などの追加のメタデータを保存することも、保存しない場合もあります(一部は--acls --xattrsGNU tarの使用などの追加オプションが必要な場合があります)。

1コピーできないctimeと一部のディレクトリatimeは除外されます。 ²ルートのみの所有権を保持できます。

答え2

人間タール:

   -P, --absolute-names
          Don't strip leading slashes from file names  when  creating  ar‐
          chives.

   -p, --preserve-permissions, --same-permissions
          extract information about file permissions  (default  for  supe‐
          ruser)

   --xattrs
          Enable extended attributes support.

関連情報