ソースから場所にファイルをコピーしています。ソースの所有者は私ではなく、ソースでのファイルの許可は---- rwx ---です。私が所有する宛先ディレクトリにコピーされたファイルの許可は---- r-x ---です。宛先ディレクトリーの許可はdrwxrwsrwxです。宛先ディレクトリと同じ権限を持つファイルを入手するにはどうすればよいですか。 「cp --no-preserve = all」を試してみましたが、機能しませんでした(同じ権限です)。
これを試して:
cp --no-preserve=mode,ownership $backupfile $destination
「コピー先のディレクトリのアクセス権を保持する方法」に言い換えてみましょう。
野生で見つけた2、3の回答を組み合わせただけなので、回答を信用できません。だからここに来る。
アクセス許可は通常、ファイルのコピー先のディレクトリによっては伝達されません。新しいアクセス許可は、ユーザーのumaskによって制御されます。ただし、ある場所から別の場所にファイルをコピーする場合は、ユーザーのumaskが基本的に無視され、ファイルに対する既存のアクセス許可が保持されるという特殊なケースになります。
これは、直接srcの権限をdstディレクトリ。
ただし、これには2段階の回避策があります。
#!/bin/bash
# Filename: cp-metadata
myecho=echo
src_path="$1"
dst_path="$2"
find "$src_path" |
while read src_file; do
dst_file="$dst_path${src_file#$src_path}"
$myecho chmod --reference="$src_file" "$dst_file"
$myecho chown --reference="$src_file" "$dst_file"
$myecho touch --reference="$src_file" "$dst_file"
done
タイムスタンプを保持したくない場合は、touch
コマンドを省略できます。置換myecho=echo
とmyecho=
実際にコマンドを実行します。
_Sudo
とchown
を効果的に実行できるようにするには、このスクリプトをchmod
モードで実行する必要があることに注意してください
cp --preserve
:最初のコマンドを正常に実行した後、コンテンツと属性をdstディレクトリにコピーします。
--preserve [= ATTR_LIST]
指定された属性(デフォルト:モード、所有者、タイムスタンプ)を保持します。可能な場合、追加の属性:コンテキスト、リンク、xattr、すべて
\cp -rfp $src_dir $dst_dir
はあなたがやりたいことをするべきです。