![如何复制文件夹的内容而不影响目标文件夹的权限?](https://linux22.com/image/109192/%E5%A6%82%E4%BD%95%E5%A4%8D%E5%88%B6%E6%96%87%E4%BB%B6%E5%A4%B9%E7%9A%84%E5%86%85%E5%AE%B9%E8%80%8C%E4%B8%8D%E5%BD%B1%E5%93%8D%E7%9B%AE%E6%A0%87%E6%96%87%E4%BB%B6%E5%A4%B9%E7%9A%84%E6%9D%83%E9%99%90%EF%BC%9F.png)
我想将一个目录中的所有文件和文件夹复制到另一个目录没有更改目标目录的权限。
其中源文件夹是 555,目标文件夹是 775。如果我使用下面的命令,目标文件夹将更改为 555。我不想要这样。
cp -r /origin/. /destination
复制 /origin 内容的正确语法是什么?所以 /destination 仍然是 775
我没有须藤。
答案1
使用rsync
:
rsync -rlD /origin/ /destination/
重要的是/
末尾的origin/
,它告诉 rsync 复制目录的内容,而不是目录本身。这样,/destination
除了向其中添加文件之外,顶级目录不会被复制和更改。
开关说明:
-a, --archive archive mode; equals -rlptgoD (no -H,-A,-X)
-r, --recursive recurse into directories
-l, --links copy symlinks as symlinks
-p, --perms preserve permissions
-t, --times preserve modification times
-g, --group preserve group
-o, --owner preserve owner (super-user only)
-D same as --devices --specials
--devices preserve device files (super-user only)
--specials preserve special files
答案2
不要复制目录本身,而是复制其中的文件。
cp -r /origin/* /destination
如果存在点文件(名称以字符 开头的文件.
),则不会复制它们,因为*
会跳过这些文件。用于cp -r /origin/.[!.]* /destination
复制点文件,并且cp -r /origin/..?* /destination
是否存在名称以 开头的文件..
(除了..
其自身,它指定父目录)。