paulh at hamjudo.com
Thu Sep 9 14:04:38 GMT 2004
On Wed, 8 Sep 2004, Wayne Davison wrote:
> On Wed, Sep 08, 2004 at 04:52:51PM -0400, Paul Haas wrote:
>> I can think of 4 usefull modes:
>> 1 The default, don't try to chown().
>> 2 --owner If rsync thinks it is root, then try to chown()
>> 3 --owner-whining Always try to chown() and whine if it doesn't work.
>> 4 --owner-no-whining Always try to chown(), don't whine if it doesn't work.
> Here's a patch that adds mode 3 to the two existing modes (leaving mode
> 4 unimplemented for now). It forces the user to specify -oo to perform
> chowing even when not root (-ao is not enough), and to specify -gg to
> try to preserve all groups when not root (even if the group wasn't
> returned by the getgroups() call). For example:
> rsync -avoogg /src/ host:/dest
> This only works if both sides have this patch applied (otherwise the
> normal -o and -g behavior would apply).
It looks good to me.
You might want to add something like:
--- options.c 2004-09-09 09:20:20.000000000 -0400
+++ options.c.new 2004-09-09 09:17:17.000000000 -0400
@@ -250,7 +250,9 @@
rprintf(F," -H, --hard-links preserve hard links\n");
rprintf(F," -p, --perms preserve permissions\n");
rprintf(F," -o, --owner preserve owner (root only)\n");
+ rprintf(F," -oo attempt to preserve owner (even if not root)\n");
rprintf(F," -g, --group preserve group\n");
+ rprintf(F," -gg attempt to preserve group (even if not root)\n");
rprintf(F," -D, --devices preserve devices (root only)\n");
rprintf(F," -t, --times preserve times\n");
rprintf(F," -S, --sparse handle sparse files efficiently\n");
Note: In a contrived test, rsync didn't do a chmod() after a chown()
failed. So those files were left with the mode of the temporary file. I
can't think of a real world situation where that matters.
Now the stage is set for someone to create a filesystem with semantics
that are designed for rsync. rsync wouldn't need to run as root on the
system that holds the backups. FUSE, filesystem in userspace, is a good
place to start. See http://lwn.net/Articles/68104 for a description.
Note that an early version of FUSE had a "bug" such that any user could
chown. Just call it a feature.
> .. wayne..
paulh at hamjudo.com
More information about the rsync