首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在从种子盒进行rsync后强制对文件执行新权限。

在从种子盒进行rsync后强制对文件执行新权限。
EN

Unix & Linux用户
提问于 2014-08-04 07:44:37
回答 2查看 26.3K关注 0票数 7

我有一个种子箱帐户,我用来出租。我已经设置了一个cron作业,它使用rsync将所有文件从种子箱下载到我的14.04.1 ubuntu服务器。下载文件夹是samba共享,因为我以前曾使用windows将内容组织到文件夹中,然后再将其移到服务器上更永久的位置。在升级到14.04之前,我使用了12.04,一切正常。

问题是,我从种子箱获得的文件是由一个名为"544“的用户拥有的(这是由种子箱生成的用户名,而不是八进制的东西),我的用户不能在我的服务器上删除它。更改下载文件夹的权限后,我可以删除它们。此外,在共享samba文件夹时,我还授予了所有用户在samba文件夹中读写的权限。

因此,我的问题是:是否可以通过执行一些优雅的命令来使rsync在下载文件时更改用户/权限?或者,是否有可能使文件夹功能的方式,所有新文件将自动改变用户时,复制/移动到它?我想我可以将chmod命令放入sudo中,每隔一段时间运行一次,以更改文件的所有者,但是由于有时要下载的数据量可能相当大,因此很难知道什么时候在rsync作业中触发它,以确保下载所有文件。

EN

回答 2

Unix & Linux用户

发布于 2014-08-04 08:01:41

rsync只在要求所有者使用-o时才保留其所有者,否则文件将由运行rsync命令的用户拥有,就像创建任何其他文件时一样。然而,-a包括了-o,因此许多常见的rsync命令行都包括它。man rsync明确地包含了一段关于这一点的内容:

代码语言:javascript
运行
复制
For example: if you want to use -a (--archive) but don’t want -o
(--owner),  instead  of  converting  -a  into -rlptgD, you could
specify -a --no-o (or -a --no-owner).

因此,您可以使用rsync -a source dest代替rsync -a --no-o source dest,让运行命令的用户拥有文件。

另一方面,通常只有当您是root用户时才能更改文件的所有者,所以不会出现太多情况。如果出于某种原因需要以根用户的身份运行此作业,并且希望这些文件由普通用户而不是根用户拥有,则可以使用--chown选项:

代码语言:javascript
运行
复制
rsync -a --chown=youruser:yourgroup ...

对于更复杂的映射,也有一个--usermap选项,如果您确实希望保留一些用户的话。它采用逗号分隔的from:to对列表。

作为最后一种选择,因为您显然是从cron作业中运行rsync的,所以您可以使用&& chown ...将所有者/权限更改操作附加到cron作业中。

票数 15
EN

Unix & Linux用户

发布于 2018-01-04 19:17:16

我测试了一些方法,但在我的例子中,这个脚本的结果

代码语言:javascript
运行
复制
rsync -a -v --progress --modify-window=1 -c -b -i -s -m --del -vv --ignore-errors --chmod=ugo=rwx --delete --delete-excluded  --exclude='*~'  --exclude='.*' --backup-dir=.rsync_bak /home/test /media/user/usb_ext4

是权限不能比写入文件的分区/目标的权限更宽。(安装设备后检查这些权限)

票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/148264

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档