Ubuntu Linux:将文件/文件夹权限从一台计算机复制到另一台计算机

Ubuntu Linux:将文件/文件夹权限从一台计算机复制到另一台计算机

我的任务是将大型(数千个文件)Magento 安装传输到不同的服务器。由于是 Windows 原生,我只需将文件下载到我的电脑上,然后通过 FTP 将它们传回。

但是,我现在意识到权限都是不正确的,我不能简单地把每个文件都做一遍。

有什么方法可以同步/复制文件权限吗?我不确定用户/组是否必须设置相同?从外观上看,我只需要正确的数字权限即可。

它们是完全独立的服务器,并且文件/文件夹将是相同的。 Ubuntu 12.04 是“新”服务器上的操作系统。

答案1

在 Linux 上,您可以使用以下命令备份和恢复所有权和权限(包括访问控制列表,但不包括 SELinux 上下文)ACL工具。跑步getfacl -R>权限.txt位于具有正确权限的计算机的顶级目录中。将输出文件复制到目标机器并运行setfacl --restore=permissions.txt在顶级目标目录中。

如果您需要复制所有权和权限,则需要以 root 身份执行恢复部分。

答案2

您可能想要使用rsync。要使其工作,您需要将其安装在两个都机器(如果尚未安装)。之后,只需运行(以 root 身份):

rsync -avrHP root@source-host:/path/to/source-directory/ /path/to/destination

这假设:

  • 您在目标主机上运行该命令。如果您想在源主机上运行它,只需root@source-host:从第一个参数中删除该部分,然后root@destination-host:向第二个参数添加一个参数即可。注意:无法运行 rsync远程主机;只有其中一端可以是“远程”端。
  • 完全可以通过 ssh 以 root 身份登录。出于安全原因,现在常见的做法是禁用此类访问。然而,为了让 rsync 能够真正复制权限,它需要在两端都以 root 身份运行。如果它被禁用,请检查/etc/ssh/sshd_config并寻找PermitRootLogin。如果设置为no,则切换为yes并重新启动sshd。复制文件后不要忘记再次禁用它!
  • 对源主机中的文件拥有所有权的用户都存在于目标主机上。否则,某些权限位可能会被错误复制。

请注意,你这样做不是需要先删除已经复制的文件。 rsync会检测文件存在,但同步权限。如果有一些文件在复制后发生了变化,rsync 也会同步它们的内容。

答案3

以 root 身份运行rsync -og也许这就是您正在寻找的。

来自联机帮助页:

-o, --owner
              This option causes rsync to set the owner of the destination file to be the same as the source file, but only if the receiving rsync is being run as the super-user (see also the --super and --fake-super options).  Without this option,  the  owner  of
              new and/or transferred files are set to the invoking user on the receiving side.

              The preservation of ownership will associate matching names by default, but may fall back to using the ID number in some circumstances (see also the --numeric-ids option for a full discussion).

       -g, --group
              This option causes rsync to set the group of the destination file to be the same as the source file.  If the receiving program is not running as the super-user (or if --no-super was specified), only groups that the invoking user on the receiving side
              is a member of will be preserved.  Without this option, the group is set to the default group of the invoking user on the receiving side.

              The preservation of group information will associate matching names by default, but may fall back to using the ID number in some circumstances (see also the --numeric-ids option for a full discussion).

相关内容