unix - 如何更改 rsync 的所有者

标签 unix rsync

我了解保留 rsync 的权限。 但是,就我而言,我的本地计算机没有网络服务器所需的文件的用户。因此,当我进行 rsync 时,我需要所有者和组在网络服务器上是 apache,但在本地计算机上是我的用户名。有什么建议吗?

我想澄清并准确解释我需要做什么。

我的个人计算机:名为“home”,用户帐户为“michael” 我的网络服务器:名为“server”,用户帐户为“remote”,用户帐户为“apache”

当前情况:我的网站位于“home”,所有者为“michael”,位于“server”,所有者为“apache”。 “home”需要使用用户“michael”,“server”需要使用用户“apache”

任务:将“home”上的我的网站同步到“服务器”,但所有文件的所有者均为“apache”和组“apache”

问题:rsync 将保留权限、所有者和组;但是,我需要所有文件都属于 apache 的所有者。我知道不保留所有者会将用户的所有者放在“服务器”上,但由于该用户是“远程”,因此它使用该用户而不是“apache”。我无法与用户“apache”进行 rsync(这很好),但我不愿意公开一个安全风险。

我对如何解决的唯一想法:在每次rsync之后手动chown -Rchgrp -R,但它是一个巨大的系统,这需要很长时间,特别是因为它即将投入生产。

有人知道怎么做吗?

我当前用于rsync的命令:

rsync --progress -rltpDzC --force --delete -e "ssh -p22" ./ remote@server.com:/website

最佳答案

如果您有权访问 rsync v.3.1.0 或更高版本,请使用 --chown 选项:

rsync -og --chown=apache:apache [src] [dst]

更多信息来自类似问题的答案:ServerFault: Rsync command issues, owner and group permissions doesn´t change

关于unix - 如何更改 rsync 的所有者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11131477/

相关文章:

java - 如何在unix中成功杀死java进程并重新启动它?

windows - 在 PATH 环境中拥有本地目录不安全?

linux - rsync 使用 shopt globstar 和 **/。 - 如何排除目录?

linux - Unix:stat程序(大小:8)

php - 在 Mac OS X 中终止 PHP 进程

linux - 使用 cron 执行期望脚本时 rsync 给出错误

c++ - 用于文件同步的简单客户端

rsync - 使用非 root 登录的 lsync 配置

linux - Perl 中的条件拆分