here (in keep_backup())? --- backup.c.orig Mon Dec 9 17:02:36 2002 +++ backup.c Mon Dec 9 17:03:50 2002 @@ -273,6 +273,7 @@ /* move to keep tree if a file */ if(!kept) { + make_bak_dir(fname,backup_dir); if (!robust_move (fname, keep_name)) rprintf(FERROR, "keep_backup failed %s -> %s : %s\n", fname, keep_name, strerror(errno)); this reconstructs parent directory permissions more in keeping with my (humble) expectations, in addition to being consistent with the way all ~S_IFREG links' parents are produced just curious
James Delahanty
2002-Dec-16 22:02 UTC
when using --backup-dir: why not make_bak_dir() . . .
Buck, You have a good point about make_bak_dir(), and pose a good question... With the --backup-dir switch, any file *or directory* that is destined for deletion is saved to the backup directory. A file is "deleted" by rsync whenever it is actually deleted on the sync system (obviously!), or when it is replaced by a file with the same name/different rsync signature as part of the rsync process. All files or directories that fall under this umbrella are saved to the backup-dir with their original permissions intact. The interesting question is: What do we do with directories that we must manufacture to position the files in the "right" place in the backup-dir? My take was: Completely ignore the permissions of these directories, unless they were "deleted" (see above), and use the robust_move() function already in backup.c to move the file/create the directories as needed (perms: 0755). This was done strictly for speed. The win: Fast, no hassle path creation. The lose: Created path does NOT have same permission as original path to file -- but the individual file permissions are correct. This was an acceptable tradeoff for our purposes, but YMMV. I can certainly understand (and appreciate) that it's an unacceptable tradeoff to some. Personally, I prefer that this shortcut be left as is, or be (yet another) compile-time option. (-DKEEP_ALL_BK_DIR_PERMS), but I'm not a maintainer, just a contributor. (You might like to profile the change, though, just to see the kind of hit you take. IIRC, it was pretty significant.) P.S. -- Many thanks to the Rsync team, Merry Christmas and Happy Holidays! Regards, Jim Delahanty> Date: Mon, 9 Dec 2002 17:13:15 -0500 > From: Buck Huppmann <buckh@pobox.com> > To: rsync@lists.samba.org > Subject: when using --backup-dir: why not make_bak_dir() . . . > > here (in keep_backup())? > > --- backup.c.orig Mon Dec 9 17:02:36 2002 > +++ backup.c Mon Dec 9 17:03:50 2002 > @@ -273,6 +273,7 @@ > > /* move to keep tree if a file */ > if(!kept) { > + make_bak_dir(fname,backup_dir); > if (!robust_move (fname, keep_name)) > rprintf(FERROR, "keep_backup failed %s -> %s : %s\n", > fname, keep_name, strerror(errno)); > > this reconstructs parent directory permissions more in keeping with > my (humble) expectations, in addition to being consistent with the > way all ~S_IFREG links' parents are produced > > just curious