所有者と権限を同じに保ちながらフォルダをコピーする方法は?

所有者と権限を同じに保ちながらフォルダをコピーする方法は?

そのため、次のようにホームフォルダを外部ドライブにコピーしてバックアップする予定です。

sudo cp -r /home/my_home /media/backup/my_home

その結果、外付けドライブのすべてのフォルダが所有されます。元の所有権と権限を維持するにはroot:rootどうすればよいですか?cp

答え1

sudo cp -rp /home/my_home /media/backup/my_home

cp マンページから:

 -p     same as --preserve=mode,ownership,timestamps

 --preserve[=ATTR_LIST]
          preserve the specified attributes (default: mode,ownership,timestamps),
          if possible additional attributes: context, links, xattr, all

答え2

を使用することもできますrsync

sudo rsync -a /home/my_home/ /media/backup/my_home/

rsyncマンページから:

 -a, --archive
              This  is  equivalent  to  -rlptgoD.  It  is a quick way of saying you want
              recursion and want to preserve almost everything (with -H being a  notable
              omission).    The   only  exception  to  the  above  equivalence  is  when
              --files-from is specified, in which case -r is not implied.

              Note that -a does not preserve hardlinks, because finding  multiply-linked
              files is expensive.  You must separately specify -H.

cp以下を比較するには、この質問を参照してくださいrsynchttps://stackoverflow.com/q/6339287/406686

次のスラッシュに注意してください(詳細はマンページを参照)。

答え3

cp -a

Where-aの略語--archive— デフォルトでは、ディレクトリをそのままコピーします。ファイルはすべての属性を保持し、シンボリックリンクは逆参照されません(-d)。

からman cp

   -a, --archive
          same as -dR --preserve=all

答え4

次のことができます。

tar cf - my_home | (cd /media/backup; sudo tar xf - )

tar権限、所有権、およびディレクトリ構造はそのまま維持しますが、すべてをバイトストリームに変換します。ディレクトリを変更し、tar変換を元に戻す「サブシェル」(括弧内のコマンド)を実行します。バイト文字列は、正しい所有権と権限を持つディレクトリとファイルになります。

関連情報