小编Nig*_*Owl的帖子

如何将属于一个用户的所有文件更改为另一个用户?

我正在寻找一个 Linux 命令,该命令可以将属于给定用户的所有文件的所有权(最好在目标目录中)更改为另一个指定用户。

我梦想中的命令看起来像这样......

chuser -R --olduser tom --newuser jerry
Run Code Online (Sandbox Code Playgroud)

或者

chuser -R --olduser 1066 --newuser 1492
Run Code Online (Sandbox Code Playgroud)

这是我的场景...我有一个备份文件 (.tgz),其中保存了用户和组信息。它取自运行 Apache 和 MySQL 的 Web 服务器。备份中的文件来自整个系统,包含来自多个不同用户和多个系统类型帐户的文件,关键是在新服务器上恢复时,设置不会丢失。问题是正在恢复文件的机器上的用户与备份文件中的用户不匹配。例如,两台机器都有一个 MySQL 用户,但它们有不同的用户 ID,并且两台机器上存在多个属于不同用户的用户 ID。这意味着无法将新机器上的用户同步到旧机器上的用户。

我可以使用 find 命令找到所有用户文件,如下所示...

find /decompressed-backup-dir -uid 1050
Run Code Online (Sandbox Code Playgroud)

或者

find /decompressed-backup-dir -user tom
Run Code Online (Sandbox Code Playgroud)

如果,正如我怀疑的那样,没有办法用单个命令做我想做的事,那么也许有一种方法可以将 find 命令的结果通过管道传输到另一个命令来处理所有权更改?

我可以用 PHP 脚本来做到这一点,但备份中有 4GB 和数万个文件,所以我不想使用 PHP 或 Perl,但我会对可以处理它的 shell 脚本感到满意。

linux shell command-line

58
推荐指数
4
解决办法
6万
查看次数

标签 统计

command-line ×1

linux ×1

shell ×1