我有一个种子箱帐户,我用来出租。我已经设置了一个cron作业,它使用rsync
将所有文件从种子箱下载到我的14.04.1 ubuntu服务器。下载文件夹是samba共享,因为我以前曾使用windows将内容组织到文件夹中,然后再将其移到服务器上更永久的位置。在升级到14.04之前,我使用了12.04,一切正常。
问题是,我从种子箱获得的文件是由一个名为"544“的用户拥有的(这是由种子箱生成的用户名,而不是八进制的东西),我的用户不能在我的服务器上删除它。更改下载文件夹的权限后,我可以删除它们。此外,在共享samba文件夹时,我还授予了所有用户在samba文件夹中读写的权限。
因此,我的问题是:是否可以通过执行一些优雅的命令来使rsync
在下载文件时更改用户/权限?或者,是否有可能使文件夹功能的方式,所有新文件将自动改变用户时,复制/移动到它?我想我可以将chmod
命令放入sudo中,每隔一段时间运行一次,以更改文件的所有者,但是由于有时要下载的数据量可能相当大,因此很难知道什么时候在rsync作业中触发它,以确保下载所有文件。
发布于 2014-08-04 08:01:41
rsync
只在要求所有者使用-o
时才保留其所有者,否则文件将由运行rsync
命令的用户拥有,就像创建任何其他文件时一样。然而,-a
包括了-o
,因此许多常见的rsync
命令行都包括它。man rsync
明确地包含了一段关于这一点的内容:
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
选项:
rsync -a --chown=youruser:yourgroup ...
对于更复杂的映射,也有一个--usermap
选项,如果您确实希望保留一些用户的话。它采用逗号分隔的from:to
对列表。
作为最后一种选择,因为您显然是从cron作业中运行rsync
的,所以您可以使用&& chown ...
将所有者/权限更改操作附加到cron作业中。
发布于 2018-01-04 19:17:16
我测试了一些方法,但在我的例子中,这个脚本的结果
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
是权限不能比写入文件的分区/目标的权限更宽。(安装设备后检查这些权限)
https://unix.stackexchange.com/questions/148264
复制相似问题