<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">I have users running rsync 3.0.6 on Mac OS 10.5 and 10.6 with the following arguments (for example):<div><br></div><div><font class="Apple-style-span" face="Courier" size="3"><span class="Apple-style-span" style="font-size: 13px;">rsync -aNHAXx --fileflags --force-change&nbsp;--no-inc-recursive&nbsp;--delete-during&nbsp;--filter="P _Archive*"&nbsp;--filter="P /*" --backup&nbsp;--backup-dir="_Archive_2010_March_07_22-27-43" / /Volumes/Backup</span></font></div><div><br></div><div>I can't seem to figure out how make_bak_dir could be returning this error for a handful of them:<div><br></div><div><div>rsync: make_bak_dir mkdir "/Volumes/Backup/_Archive_2010_March_07_22-27-43/Users/jsmith/Library/Mail/Mailboxes/ &nbsp; Orchestra" failed: File exists</div><div>rsync: keep_backup failed: "/Volumes/Backup/Users/jsmith/Library/Mail/Mailboxes/ &nbsp; Orchestra/ &nbsp; &nbsp;* New Mexico Concert/Assistant - John Smith.mbox/Messages/269981.emlx" -&gt; "_Archive_2010_March_07_22-27-43/Users/jsmith/Library/Mail/Mailboxes/ &nbsp; Orchestra/ &nbsp; &nbsp;* New Mexico Concert/Assistant - John Smith.mbox/Messages/269981.emlx": No such file or directory</div><div>rsync: stat "/Volumes/Backup/_Archive_2010_March_07_22-27-43/Users/jsmith/Library/Mail/Mailboxes/ &nbsp; Orchestra/ &nbsp; &nbsp;* New Mexico Concert/Assistant - John Smith.mbox/Messages/269981.emlx" failed: No such file or directory</div><div><div><br></div></div><div>Here's another example from a different user:</div><div><br></div><div>rsync: make_bak_dir mkdir "/Volumes/LaCie 1TB/_Archive_2010_March_04_18-30-22/Users/jdoe/Library/Caches" failed: File exists</div><div>rsync: keep_backup failed: "/Volumes/LaCie 1TB/Users/jdoe/Library/Caches/Adobe/Color/ACEConfigCache1" -&gt; "_Archive_2010_March_04_18-30-22/Users/jdoe/Library/Caches/Adobe/Color/ACEConfigCache1": No such file or directory</div><div>rsync: stat "/Volumes/LaCie 1TB/_Archive_2010_March_04_18-30-22/Users/jdoe/Library/Caches/Adobe/Color/ACEConfigCache1" failed: No such file or&nbsp;directory<br><br></div><div><br></div></div><div>Because everywhere that make_bak_dir is called, there's a test that the previous open() that was called failed with ENOENT. &nbsp;For example, from receiver.c:</div><div><br></div><div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; "><span style="color: #980063">if</span> ((f_copy = do_open(backupptr, O_WRONLY | O_CREAT | O_TRUNC | O_EXCL, <span style="color: #0000ff">0600</span>)) &lt; <span style="color: #0000ff">0</span>) {</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; "><span class="Apple-tab-span" style="white-space:pre">        </span><span style="color: #980063">int</span> save_errno = errno ? errno : EINVAL; <span style="color: #00842e">/* 0 paranoia */</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; "><span class="Apple-tab-span" style="white-space:pre">        </span><span style="color: #980063">if</span> (errno == ENOENT &amp;&amp; make_bak_dir(backupptr) == <span style="color: #0000ff">0</span>) {</div><div><font class="Apple-style-span" face="Monaco" size="3"><span class="Apple-style-span" style="font-size: 11px; "><br></span></font></div><div>Does make_bak_dir simply need to trap for that error, like:</div><div><br></div><div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; color: rgb(0, 132, 46); ">/* Try to find an existing dir, starting from the deepest dir. */</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; "><span style="color: #980063">while</span> (<span style="color: #0000ff">1</span>) {</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; "><span class="Apple-tab-span" style="white-space:pre">        </span><span style="color: #980063">if</span> (--p == fbuf)</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; "><span class="Apple-tab-span" style="white-space:pre">                </span><span style="color: #980063">return</span> -<span style="color: #0000ff">1</span>;</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; "><span class="Apple-tab-span" style="white-space:pre">        </span><span style="color: #980063">if</span> (*p == <span style="color: #0000ff">'/'</span>) {</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; "><span class="Apple-tab-span" style="white-space:pre">                </span>*p = <span style="color: #0000ff">'\0'</span>;</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; color: rgb(0, 132, 46); "><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">                </span></span><span style="color: #980063">if</span><span style="color: #000000"> (mkdir_defmode(fbuf) == </span><span style="color: #0000ff">0</span><span style="color: #000000"> || errno == EEXIST) // &lt;-- Trap for EEXIST?</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; "><span class="Apple-tab-span" style="white-space:pre">                        </span><span style="color: #980063">break</span>;</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; "><span class="Apple-tab-span" style="white-space:pre">                </span><span style="color: #980063">if</span> (errno != ENOENT) {</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; "><span class="Apple-tab-span" style="white-space:pre">                        </span>rsyserr(FERROR, errno,</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; color: rgb(172, 0, 13); "><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">                                </span></span>"make_bak_dir mkdir %s failed"<span style="color: #000000">,</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; "><span class="Apple-tab-span" style="white-space:pre">                                </span>full_fname(fbuf));</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; "><span class="Apple-tab-span" style="white-space:pre">                        </span><span style="color: #980063">return</span> -<span style="color: #0000ff">1</span>;</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; "><span class="Apple-tab-span" style="white-space:pre">                </span>}</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; "><span class="Apple-tab-span" style="white-space:pre">        </span>}</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; ">}</div><div><font class="Apple-style-span" face="Monaco" size="3"><span class="Apple-style-span" style="font-size: 11px;"><br></span></font></div></div><div>Thanks,</div><div>Mike</div><div><br></div></div></div></body></html>