如何使 rsync --fake-super 在扩展属性中将所有者和组存储为字符串?

如何使 rsync --fake-super 在扩展属性中将所有者和组存储为字符串?

我在 Ubuntu Server 18.04 上运行服务器。我想编写脚本来轻松地将我的程序和数据单独备份到不同的系统或从不同的系统恢复。假设我有一个应用程序,其程序文件位于/var/www/myapp/及其配置文件/etc/myapp/我的应用程序:我的应用程序

下面的所有代码都是通过带有 sudo 的脚本运行的。

我使用以下方法运行备份:

rsync -aR -M--fake-super \
    /var/www/myapp       \
    /etc/myapp           \
    backupuser@backuphost:myapp/root/

恢复我的应用程序时我运行:

adduser --system --group --no-create-home myapp
rsync -a --fake-super -M--super backupuser@backuphost:myapp/root/ /

正如预期的那样,/var/www/myapp//etc/myapp/恢复了,但所有权没有恢复。事实证明rsync,即使使用 --fake-super 运行,也不会将所有者和组存储为扩展属性中的字符串,而是尝试将它们映射到现有用户/组。所以已经在我的备份主机,我不想创建用户和组我的应用程序,所有者和组被分配了第一个免费的数字ID(在本例中为113:118):

xattr -l myapp/root/var/www/myapp/anyfile
> user.rsync.%stat: 100664 0,0 113:118

有没有办法将rsync商店所有者和组作为扩展属性中的字符串,以便它们可以在新系统上轻松恢复?因此xattr -l myapp/root/var/www/myapp/anyfile运行备份主机会导致类似这样的结果> user.rsync.%stat: 100664 0,0 myapp:myapp

相关内容