[英]How to copy files and give them permission of destination directory
我正在將文件從源復制到位置。 源不屬於我,源文件的權限是---- rwx ---。 處理我所擁有的目標目錄的文件的權限是---- rx ---。 目標目錄的權限是drwxrwsrwx。 如何使用目標目錄具有相同權限的文件。 我試過“cp --no-preserve = all”但它沒有用(仍然是相同的權限)。
試試這個:
cp --no-preserve=mode,ownership $backupfile $destination
讓我重新說一下“如何在副本上保留目標目錄的權限?”
我不能贊同答案,因為我只是結合了我在野外發現的幾個答案。 所以它來了。
權限通常不會被復制到文件的目錄傳播,而新權限則由用戶的umask控制 。 但是,當您將文件從一個位置復制到另一個位置時,這是一種特殊情況,其中用戶的umask基本上被忽略,並且保留了文件的現有權限。
這解釋了為什么你不能直接將src的權限傳播到dst目錄。
但是,這有兩步的解決方法。
#!/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]
保留指定的屬性(默認:模式,所有權,時間戳),如果可能的話還有其他屬性:context,links,xattr,all
\\cp -rfp $src_dir $dst_dir
應該做你想要的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.