<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:p="urn:schemas-microsoft-com:office:powerpoint" xmlns:a="urn:schemas-microsoft-com:office:access" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns:s="uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882" xmlns:rs="urn:schemas-microsoft-com:rowset" xmlns:z="#RowsetSchema" xmlns:b="urn:schemas-microsoft-com:office:publisher" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" xmlns:c="urn:schemas-microsoft-com:office:component:spreadsheet" xmlns:odc="urn:schemas-microsoft-com:office:odc" xmlns:oa="urn:schemas-microsoft-com:office:activation" xmlns:html="http://www.w3.org/TR/REC-html40" xmlns:q="http://schemas.xmlsoap.org/soap/envelope/" xmlns:rtc="http://microsoft.com/officenet/conferencing" xmlns:D="DAV:" xmlns:Repl="http://schemas.microsoft.com/repl/" xmlns:mt="http://schemas.microsoft.com/sharepoint/soap/meetings/" xmlns:x2="http://schemas.microsoft.com/office/excel/2003/xml" xmlns:ppda="http://www.passport.com/NameSpace.xsd" xmlns:ois="http://schemas.microsoft.com/sharepoint/soap/ois/" xmlns:dir="http://schemas.microsoft.com/sharepoint/soap/directory/" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:dsp="http://schemas.microsoft.com/sharepoint/dsp" xmlns:udc="http://schemas.microsoft.com/data/udc" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:sub="http://schemas.microsoft.com/sharepoint/soap/2002/1/alerts/" xmlns:ec="http://www.w3.org/2001/04/xmlenc#" xmlns:sp="http://schemas.microsoft.com/sharepoint/" xmlns:sps="http://schemas.microsoft.com/sharepoint/soap/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:udcs="http://schemas.microsoft.com/data/udc/soap" xmlns:udcxf="http://schemas.microsoft.com/data/udc/xmlfile" xmlns:udcp2p="http://schemas.microsoft.com/data/udc/parttopart" xmlns:wf="http://schemas.microsoft.com/sharepoint/soap/workflow/" xmlns:dsss="http://schemas.microsoft.com/office/2006/digsig-setup" xmlns:dssi="http://schemas.microsoft.com/office/2006/digsig" xmlns:mdssi="http://schemas.openxmlformats.org/package/2006/digital-signature" xmlns:mver="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns:mrels="http://schemas.openxmlformats.org/package/2006/relationships" xmlns:spwp="http://microsoft.com/sharepoint/webpartpages" xmlns:ex12t="http://schemas.microsoft.com/exchange/services/2006/types" xmlns:ex12m="http://schemas.microsoft.com/exchange/services/2006/messages" xmlns:pptsl="http://schemas.microsoft.com/sharepoint/soap/SlideLibrary/" xmlns:spsl="http://microsoft.com/webservices/SharePointPortalServer/PublishedLinksService" xmlns:Z="urn:schemas-microsoft-com:" xmlns:st="" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=iso-8859-1"><meta name=Generator content="Microsoft Word 12 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:"MS Mincho";
        panose-1:2 2 6 9 4 2 5 8 3 4;}
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Consolas;
        panose-1:2 11 6 9 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
@font-face
        {font-family:"\@MS Mincho";
        panose-1:2 2 6 9 4 2 5 8 3 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";
        color:black;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
code
        {mso-style-priority:99;
        font-family:Consolas;}
kbd
        {mso-style-priority:99;
        font-family:Consolas;}
pre
        {mso-style-priority:99;
        mso-style-link:"HTML Preformatted Char";
        margin-top:0cm;
        margin-right:0cm;
        margin-bottom:0cm;
        margin-left:1.0cm;
        margin-bottom:.0001pt;
        font-size:10.0pt;
        font-family:"Courier New";
        color:black;}
tt
        {mso-style-priority:99;
        font-family:"Courier New";}
span.HTMLPreformattedChar
        {mso-style-name:"HTML Preformatted Char";
        mso-style-priority:99;
        mso-style-link:"HTML Preformatted";
        font-family:"Courier New";
        color:black;}
span.EmailStyle22
        {mso-style-type:personal-reply;
        font-family:"Times New Roman","serif";
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body bgcolor=white lang=EN-NZ link=blue vlink=purple><div class=WordSection1><p class=MsoNormal><span style='font-size:11.0pt;color:#1F497D'>Perhaps that example code would clearer if written:<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;color:#1F497D'><o:p> </o:p></span></p><pre><span lang=LA>(</span><o:p></o:p></pre><pre>   <span lang=LA>if ! flock -w 1 200 ; then</span><o:p></o:p></pre><pre>           <span lang=LA>echo >&2 "</span>Another process is still running<span lang=LA>..."</span><o:p></o:p></pre><pre>           <span lang=LA>exit</span><o:p></o:p></pre><pre>   <span lang=LA>fi</span><o:p></o:p></pre><pre>   <span lang=LA>RunLocked</span><o:p></o:p></pre><pre><span lang=LA>) 200> ${lockdir}/mirror.centos.lock<o:p></o:p></span></pre><p class=MsoNormal><span style='font-size:11.0pt;color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;color:#1F497D'>Or<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;color:#1F497D'><o:p> </o:p></span></p><pre><span lang=LA>exec 200> ${lockdir}/mirror.centos.lock<o:p></o:p></span></pre><pre>if ! flock -w 1 200 ; then<o:p></o:p></pre><pre>   echo >&2 "Another process is still running..."<o:p></o:p></pre><pre>   exit<o:p></o:p></pre><pre>fi<span lang=LA><o:p></o:p></span></pre><pre><span lang=LA>RunLocked<o:p></o:p></span></pre><p class=MsoNormal><span style='font-size:11.0pt;color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;color:#1F497D'>Or for a more succinct version:<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;color:#1F497D'><o:p> </o:p></span></p><pre><span lang=LA>( flock -w 1</span><span lang=LA> </span><span lang=LA>200 && RunLocked ) 200> $</span>{<span lang=LA>lockdir</span>}<span lang=LA>/mirror.centos.lock</span><o:p></o:p></pre><p class=MsoNormal><span style='font-size:11.0pt;color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;color:#1F497D'>(Point is: referencing “</span><code><span lang=PL style='font-size:10.0pt'>$?</span></code><span style='font-size:11.0pt;color:#1F497D'>” is almost never needed, and usually obfuscatory.)<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;color:#1F497D'><o:p> </o:p></span></p><div><div style='border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm 0cm 0cm'><p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:"Tahoma","sans-serif";color:windowtext'>From:</span></b><span lang=EN-US style='font-size:10.0pt;font-family:"Tahoma","sans-serif";color:windowtext'> centos-mirror-bounces@centos.org [mailto:centos-mirror-bounces@centos.org] <b>On Behalf Of </b>João Carlos Mendes Luís<br><b>Sent:</b> 13 July 2011 03:29<br><b>To:</b> Mailing list for CentOS mirrors.<br><b>Subject:</b> Re: [CentOS-mirror] I see all your new mirrors ...<o:p></o:p></span></p></div></div><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><tt><span style='font-size:10.0pt'>Using "touch" and "test -e"</span></tt> as a lock test is not safe.  If the shell dies for any reason, the lock file will get stale.<br><br>If you sync station is linux, a safer option is to use the flock(1) program:<br><br><br><tt><b><span style='font-size:10.0pt'>NAME</span></b></tt><b><span style='font-size:10.0pt;font-family:"Courier New"'><br><tt>       flock - Manage locks from shell scripts</tt><br><br><tt>SYNOPSIS</tt><br><tt>       flock [-sxon] [-w timeout] lockfile [-c] command...</tt><br><br><tt>       flock [-sxon] [-w timeout] lockdir [-c] command...</tt><br><br><tt>       flock [-sxun] [-w timeout] fd</tt><br></span></b><br><br>Here is the lock part of my mirror script:<br><br><tt><b><span style='font-size:10.0pt'>RunLocked()</span></b></tt><b><span style='font-size:10.0pt;font-family:"Courier New"'><br><tt>{</tt><br><tt>   ....</tt><br><tt>}</tt><br><br><tt>(</tt><br><tt>  flock -w 1 200</tt><br><tt>  if [ "$?" -ne 0 ] ; then</tt><br><tt>    echo "Error, lock is already taken..."</tt><br><tt>    exit</tt><br><tt>  else</tt><br><tt>    RunLocked</tt><br><tt>  fi</tt><br><tt>) 200> ${lockdir}/mirror.centos.lock</tt><br><br></span></b><br><br><o:p></o:p></p><pre><span lang=LA>                                       Jonny<o:p></o:p></span></pre><pre><span lang=LA><o:p> </o:p></span></pre><pre><span lang=LA>-- <o:p></o:p></span></pre><pre><span lang=LA>João Carlos Mendes Luís - Computer & Networking Engineer<o:p></o:p></span></pre><pre><span lang=LA><a href="mailto:jonny@jonny.eng.br">jonny@jonny.eng.br</a><o:p></o:p></span></pre><p class=MsoNormal><br>On 07/12/2011 11:56 AM, Adam wrote: <o:p></o:p></p><p class=MsoNormal>admin wrote: <br><br><o:p></o:p></p><p class=MsoNormal><br>Yes It would be great . I'm still rsync centos repo. <br>Could you provide me bash script to rsync with file locking ? <o:p></o:p></p><p class=MsoNormal><br>Attached is a bash locking rsync script.  This script is pretty informative and intelligent.  It verifies that the time stamp of the server you are syncing form is newer then yours before it syncs.  Hence it shouldn't ever delete files you have already downloaded if you hit an old mirror. <br><br>Adam <br><br><o:p></o:p></p><pre><span lang=LA><o:p> </o:p></span></pre><pre><span lang=LA><o:p> </o:p></span></pre><pre><span lang=LA>_______________________________________________<o:p></o:p></span></pre><pre><span lang=LA>CentOS-mirror mailing list<o:p></o:p></span></pre><pre><span lang=LA><a href="mailto:CentOS-mirror@centos.org">CentOS-mirror@centos.org</a><o:p></o:p></span></pre><pre><span lang=LA><a href="http://lists.centos.org/mailman/listinfo/centos-mirror">http://lists.centos.org/mailman/listinfo/centos-mirror</a><o:p></o:p></span></pre></div>
<DIV><FONT face=Arial><FONT size=2>
<HR>
</FONT></FONT></DIV>
<DIV><FONT face=Arial><FONT size=2>Have you seen our website? .... </FONT><A 
href="http://www.vodafone.co.nz"><FONT size=2>www.vodafone.co.nz</FONT></A><FONT 
size=2> </FONT></FONT></DIV>
<DIV><FONT face=Arial></FONT> </DIV>
<DIV><FONT face=Arial><FONT size=2>Manage Your Account, check your Vodafone Mail 
and send web2TXT online: </FONT><A 
href="http://www.vodafone.co.nz/myvodafone"><FONT 
size=2>www.vodafone.co.nz/myvodafone</FONT></A></FONT></DIV>
<DIV><FONT face=Arial><FONT size=2></FONT> </DIV>
<HR>
</IMG>
<DIV><FONT size=1>CAUTION: This correspondence is confidential and intended for 
the named recipient(s) only.  If you are not the named recipient and 
receive this correspondence in error, you must not copy, distribute or take any 
action in reliance on it and you should delete it from your system and notify 
the sender immediately.  Thank you.</FONT></FONT></DIV>
<DIV><FONT face=Arial size=1></FONT> </DIV>
<DIV><FONT face=Arial size=1>Unless otherwise stated, any views or opinions 
expressed are solely those of the author and do not represent those of Vodafone 
New Zealand Limited.</FONT></DIV>
<DIV><FONT face=Arial size=1></FONT> </DIV>
<DIV><FONT face=Arial size=1><STRONG>20 Viaduct Harbour Avenue, Private Bag 
92161, Auckland 1030<BR>Telephone + 64 9 355 2000<BR>Facsimile + 64 9 355 
2001</STRONG></FONT></DIV>
<DIV>
<HR>
</DIV>e> 
</body></html>