I have users running rsync 3.0.6 on Mac OS 10.5 and 10.6 with the following arguments (for example):
rsync -aNHAXx --fileflags --force-change --no-inc-recursive --delete-during --filter="P _Archive*" --filter="P /*" --backup --backup-dir="_Archive_2010_March_07_22-27-43" / /Volumes/Backup I can't seem to figure out how make_bak_dir could be returning this error for a handful of them: rsync: make_bak_dir mkdir "/Volumes/Backup/_Archive_2010_March_07_22-27-43/Users/jsmith/Library/Mail/Mailboxes/ Orchestra" failed: File exists rsync: keep_backup failed: "/Volumes/Backup/Users/jsmith/Library/Mail/Mailboxes/ Orchestra/ * New Mexico Concert/Assistant - John Smith.mbox/Messages/269981.emlx" -> "_Archive_2010_March_07_22-27-43/Users/jsmith/Library/Mail/Mailboxes/ Orchestra/ * New Mexico Concert/Assistant - John Smith.mbox/Messages/269981.emlx": No such file or directory rsync: stat "/Volumes/Backup/_Archive_2010_March_07_22-27-43/Users/jsmith/Library/Mail/Mailboxes/ Orchestra/ * New Mexico Concert/Assistant - John Smith.mbox/Messages/269981.emlx" failed: No such file or directory Here's another example from a different user: rsync: make_bak_dir mkdir "/Volumes/LaCie 1TB/_Archive_2010_March_04_18-30-22/Users/jdoe/Library/Caches" failed: File exists rsync: keep_backup failed: "/Volumes/LaCie 1TB/Users/jdoe/Library/Caches/Adobe/Color/ACEConfigCache1" -> "_Archive_2010_March_04_18-30-22/Users/jdoe/Library/Caches/Adobe/Color/ACEConfigCache1": No such file or directory rsync: stat "/Volumes/LaCie 1TB/_Archive_2010_March_04_18-30-22/Users/jdoe/Library/Caches/Adobe/Color/ACEConfigCache1" failed: No such file or directory Because everywhere that make_bak_dir is called, there's a test that the previous open() that was called failed with ENOENT. For example, from receiver.c: if ((f_copy = do_open(backupptr, O_WRONLY | O_CREAT | O_TRUNC | O_EXCL, 0600)) < 0) { int save_errno = errno ? errno : EINVAL; /* 0 paranoia */ if (errno == ENOENT && make_bak_dir(backupptr) == 0) { Does make_bak_dir simply need to trap for that error, like: /* Try to find an existing dir, starting from the deepest dir. */ while (1) { if (--p == fbuf) return -1; if (*p == '/') { *p = '\0'; if (mkdir_defmode(fbuf) == 0 || errno == EEXIST) // <-- Trap for EEXIST? break; if (errno != ENOENT) { rsyserr(FERROR, errno, "make_bak_dir mkdir %s failed", full_fname(fbuf)); return -1; } } } Thanks, Mike
-- Please use reply-all for most replies to avoid omitting the mailing list. To unsubscribe or change options: https://lists.samba.org/mailman/listinfo/rsync Before posting, read: http://www.catb.org/~esr/faqs/smart-questions.html