我想将所有文件 (/var/www/html) 从系统 A (debian) 复制到系统 B (debian),并且不丢失所有 chown 和 chmod 配置。文件夹中有超过 200,000 个文件,其中许多文件都有特殊规则配置。手动更改所有文件确实很困难,而且我也没有编写外部文件来了解哪个文件有特殊规则,因此无法编写 c 文件来为我执行此操作。有没有管理员有这方面的经验,以及一些关于如何在将来正确处理这个问题的提示?br
答案1
使用该tar
命令,它将保留所有权数据和访问模式。您只需创建一个档案,将其复制到另一台计算机,解压即可。
它还可以存储扩展属性、SELinux 上下文和 ACL,但是,您必须在打包和解包时明确启用这些属性。
例如,如果您想存储 ACL 和扩展属性,您必须使用如下命令:
tar cf the_tar_file /var/www/html --acls --xattrs
而且您还必须在解包时指定这些开关:
tar xf the_tar_file --acls --xattrs
为了使此功能正常工作,目标计算机上必须存在用户,并且他们必须具有相同的用户 ID。提取时,tar
无论如何都会将文件分配给相应的用户 ID,因此如果用户不存在,则该文件将拥有不存在的 ID 的所有权。如果用户 ID 属于其他人,他们将拥有提取的文件。
如果 ACL 中定义的用户之一不存在,则设置 ACL 将失败,因此在这种情况下,整个 ACL 将被跳过(即使是有效条目)。