UNIX如何将整个目录(子目录和文件)从一个位置复制到另一个位置并保留权限

时间:2014-10-01 12:12:35

标签: chmod cp chown chgrp

我刚刚将整个目录结构从服务器上的一个位置复制到另一个位置:

cp -r /home/abc/public_html/* /home/xyz/public_html/

工作得很好。除了dirs&文件现在由root拥有,该群组也是root

如何执行此复制操作并保留dirs&文件ownershipgroupspermission设置?

这是我的man cp

NAME
       cp - copy files and directories

SYNOPSIS
       cp [OPTION]... [-T] SOURCE DEST
       cp [OPTION]... SOURCE... DIRECTORY
       cp [OPTION]... -t DIRECTORY SOURCE...

DESCRIPTION
       Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY.

       Mandatory arguments to long options are mandatory for short options too.

       -a, --archive
              same as -dR --preserve=all

       --backup[=CONTROL]
              make a backup of each existing destination file

       -b     like --backup but does not accept an argument

       --copy-contents
              copy contents of special files when recursive

       -d     same as --no-dereference --preserve=links

       -f, --force
              if an existing destination file cannot be opened, remove it and try again (redundant if the -n option is used)

       -i, --interactive
              prompt before overwrite (overrides a previous -n option)

       -H     follow command-line symbolic links in SOURCE

       -l, --link
              link files instead of copying

       -L, --dereference
              always follow symbolic links in SOURCE

       -n, --no-clobber
              do not overwrite an existing file (overrides a previous -i option)

       -P, --no-dereference
              never follow symbolic links in SOURCE

       -p     same as --preserve=mode,ownership,timestamps

       --preserve[=ATTR_LIST]

5 个答案:

答案 0 :(得分:2)

对于某些与unix相关的操作系统(例如来自coreutils的“cp”的Linux),答案“cp -a”是正确的,但不是全部。

“cp -rp”对其他人来说是正确的。

您应该查阅特定操作系统上“cp”的手册页。或者让我们知道你在用什么。

答案 1 :(得分:1)

使用cp -a复制权限和用户/组。

手册页解释了它:

-a, --archive
    same as -dR --preserve=all
...
-d     same as --no-dereference --preserve=links
...
-R, -r, --recursive
   copy directories recursively
...
--preserve[=ATTR_LIST]
   preserve the specified attributes (default: mode,ownership,timestamps), if possible additional attributes:
   context, links, xattr, all

答案 2 :(得分:1)

来自man cp

-p    Cause cp to preserve the following attributes of each source file
       in the copy: modification time, access time, file flags, file mode,
       ACL, user ID, and group ID, as allowed by permissions.

所以cp -pr

答案 3 :(得分:1)

man cp说:

-p     same as --preserve=mode,ownership,timestamps

答案 4 :(得分:0)

顺便说一句,避免:

cp -r src/* dest

因为它不会复制隐藏文件

在linux上执行:

cp -rT src dest

和在BSD上:

cp -R src/ dest