我需要在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中,除非另有说明。