ファイル権限のコピー 200

ファイル権限のコピー 200

--w-------権限が200の一部のファイルを含むディレクトリツリーを含むファイル属性を維持しながら、ディレクトリを繰り返しコピーしたいと思います。

コピーコマンドはcp -ar sourcedirectory targetdirectoryこれらのファイルをスキップし、各ファイルは次のようになります。

cp: cannot open `sourcedirectory/foo/somefile.bar' for reading: Permission denied`

私の質問:権限を変更せずにコピーコマンドがこれらのファイルをスキップするのを防ぐにはどうすればよいですか?

cpコピーコマンド以外のユーティリティを使用する必要があると思う場合は、その理由を説明してください。

答え1

ファイルをコピーするには、ファイルを読み取れるように設定する必要があります。これはツールの選択とは関係ありません。ファイルを読み取る権限がないため、すべてのプログラムがファイルを開いて読み取ることができません。

もしACL有効になっていて(ext2 / ext3 / ext4の場合はマウントオプションが必要ですacl)、コピーに興味がない場合は、コピーを実行しているユーザーがファイルを読み取ることを許可するACLを追加してください。

setfacl -R -m u:username:rX sourcedirectory

それ以外の場合は、ファイル権限を事前に変更し、後で復元するか(両方とも)ルートにコピーする必要があります。

答え2

このページできるだけ多くのメタデータを維持しながら、データをコピーするさまざまな方法を提供します。それぞれ試してみることができ、rootユーザーとして:

  • cp -av /source /dest#使用しないでください-r。動作を予測するのは難しく、含まれてい-aます。-R
  • cd /source; tar -cf- . | tar -xvpf- -C /dest
  • cd /source; find . -depth -print0 | cpio -pdmv -0 /dest
  • rsync -av --delete --hard-links /source/ /dest

/Rsync は引数に s が続く場合は少しトリッキーです。マニュアルページの説明に従って、両方の方法でディレクトリを次の/source/foo場所にコピーします/dest/foo

  • rsync ... /source/foo /dest
  • rsync ... /source/foo/ /dest/foo

これらのどれも機能しないかもしれません。試してみると、最高の視聴者を見つけてください。

答え3

私が知っている限り、以下の手順に従って権限をそのままにしてすべてのファイルをコピーできます。

$ cd <sourcedirectory>

$ tar -cvf <sourcedirectory.tar> .

$ cp <sourcedirectory.tar> <destinationdirectory>

$ tar -xvf <sourcedirectory.tar>

関連情報