如果用户ID更改,tar会保留权限吗?

我需要在tar命令上用“p”选项备份一些数据。 问题是我要恢复这个数据的地方将有所有相同的用户,但这些用户可能有不同的ID。 这是否有任何区别焦油或将它恢复正确的用户名权限?

    tarlogging基于UID和GID的权限,而不是与其关联的string。 因此,如果一台服务器上的UID是3300,并且链接到“bob”,则新服务器上的文件将由具有UID 3300的用户拥有。

    在UNIX上虚拟一切(我想说一切,但绝对不能100%肯定)使用UID:GID值,因为这就是实际存储在文件系统级别的值。 这个名字只是passwd文件中的一个简单的查找,底层的检查是使用数字值完成的。

    总结以前的答案,并添加一些重要的信息:

    • 在创build存档时, tar将始终保留文件的用户和组ID, 除非--owner=NAME--group=NAME 。 但仍然会有一个用户和组与每个文件关联。

    • GNU tar,也许还有其他版本的tar存储用户和组 ,除非使用--numeric-owner 。 bsdtar默认也存储用户名和组名,但是在创build时支持--numeric-owner选项,直到bsdtar 3.0才出现(注意bsdtar在提取时间长的时候支持这个选项)。

    • 常规用户提取时,所有文件将始终由用户拥有。 它不能不同,因为提取文件是在文件系统上创build一个新文件,而普通用户不能创build文件并赋予其他人所有权。

    • 当以root身份解压时, 除非使用 --no-same-owner否则 tar会默认恢复提取的文件的所有权,这将赋予root身份所有权。

    • 在GNU tar,bsdtar以及其他版本的tar ,恢复的所有权由用户(和组) 名称完成 ,如果该信息在归档中并且目标系统中有匹配的用户。 否则,它通过ID恢复。 如果提供了--numeric-owner选项,则会忽略用户名和组名。

    • 权限和时间戳也保存到存档,并在默认情况下进行恢复,除非使用选项--no-same-permissions和/或--touch 。 当被用户提取时,用户的umask被从权限中减去 ,除非使用--same-permissions

    • --preserve-permissions--same-permissions是别名,与-p具有相同的function

    希望这有助于澄清问题! 🙂

    将–same-owner选项用于GNU tar。 请参阅http://www.gnu.org/software/tar/manual/html_section/Attributes.html

    如果你正试图在两个系统之间传输文件,rsync将默认通过用户名而不是uid设置权限,查看两端的用户名。 只有当用户不存在于其中一个系统时,才会将其复制到uid中,除非另有说明。