GeG*_*edy 7 permissions samba rsync
我有一个用于种子下载的种子箱帐户。我已经设置了一个 cron 作业,用于rsync
将所有文件从种子箱下载到我的 14.04.1 ubuntu 服务器。下载文件夹是一个 samba 共享,因为我以前使用 Windows 将内容组织到文件夹中,然后再将其移动到我服务器上更永久的位置。在升级到 14.04 之前,我使用了 12.04,一切正常。
问题是我从种子箱获得的文件归名为“544”的用户所有(这是种子箱生成的用户名,不是一些八进制的东西)并且我的用户在我的服务器上无法删除。更改下载文件夹的权限后,我可以删除它们。此外,我已授予所有用户在共享 samba 文件夹时读取/写入的权限。
所以我的问题是:是否可以通过执行一些优雅的命令rsync
在下载文件时更改文件的用户/权限?或者是否可以使文件夹功能使所有新文件在复制/移动到它时都会自动更改用户?我想我可以将chmod
命令放在 sudo cron 中每隔一段时间运行一次以更改文件的所有者,但是由于有时要下载的数据量可能相当大,因此很难知道何时触发它与 rsync-job 的关系,以确保下载所有文件。
Mic*_*mer 15
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).
Run Code Online (Sandbox Code Playgroud)
因此,rsync -a source dest
您可以使用rsync -a --no-o source dest
让运行命令的用户拥有文件来代替您。
另一方面,如果您是 root,您通常只能更改文件的所有者,所以这不会出现太多。如果出于某种原因需要以 root 身份运行此作业,并且您希望文件归普通用户而不是 root 拥有,则可以使用以下--chown
选项:
rsync -a --chown=youruser:yourgroup ...
Run Code Online (Sandbox Code Playgroud)
--usermap
如果您确实想保留一些用户,还可以选择更复杂的映射。它需要一个逗号分隔的from:to
对列表。
作为最后一个选择,由于您显然是rsync
从 cron 作业运行,您只需将所有者/权限更改操作附加到 cron 作业&& chown ...
。