如何在 rsync 中任意映射用户/组所有权

mat*_*teo 19 rsync user ownership user-groups

我需要将目录 rsync 到远程服务器,以便源(本地)计算机上属于用户 X 和组 Y 的所有文件都映射到目标(远程)计算机上的用户 W 和组 Z。如果可能的话,使用 ssh 作为传输,但如果我需要使用 rsync 守护进程,它也很好。

有没有办法做到这一点?我正在寻找一种建立任意用户/组映射的方法,例如

local user X => remote user W
local group Y => remote group Z
... and as many of these as needed.
Run Code Online (Sandbox Code Playgroud)

这应该是一个非常常见的用例,不是吗?例如,我的本地计算机上有文件,我的用户名是 X,我需要将它们上传到 Web 服务器,在那里它们需要属于给定用户,该用户与我的用户名或 UID 不同我的个人电脑。

我在 rsync 的手册页上找不到那个...

本地和远程机器上的 LINUX(Ubuntu 本地,centOS 远程)

我试过的命令:rsync -avz /path/to/local root@myhost.com:/path/to/remote

小智 21

Rsync 3.1.0 版正是为此目的引入了--usermap--groupmap选项。请参阅手册页


小智 6

rsync 的最新版本(至少 3.1.1)允许您指定“远程所有权”:

--usermap=tom:www-data
Run Code Online (Sandbox Code Playgroud)

将 tom 所有权更改为 www-data(又名 PHP/Nginx)。如果您使用 Mac 作为客户端,请使用 brew 升级到最新版本。在您的服务器上,下载档案源,然后“制作”它!