簡體   English   中英

如何復制文件並授予它們目標目錄的權限

[英]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目錄。

但是,這有兩步的解決方法。

  1. cp-metadata :將屬性和僅要保留的屬性復制回源目錄。 這是一個可以執行此操作的快速腳本:
#!/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=echomyecho=實際執行的命令。
請注意,此腳本應以sudo模式運行,以便能夠有效地運行chownchmod

  1. cp --preserve :現在成功運行第一個命令后,就可以將內容和屬性一起復制到dst目錄了。

    --preserve [= ATTR_LIST]
    保留指定的屬性(默認:模式,所有權,時間戳),如果可能的話還有其他屬性:context,links,xattr,all

    \\cp -rfp $src_dir $dst_dir應該做你想要的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM