scratch/output/Scratch/fr/blog/2009-10-28-custom-website-synchronisation-with-mobileme--2-/index.html
Yann Esposito (Yogsototh) 219937b6c9 Regen
2012-01-18 14:28:01 +01:00

437 lines
No EOL
34 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="keywords" content="Apple, mobileme, WebDav, synchronisation, zsh, script">
<link rel="shortcut icon" type="image/x-icon" href="/Scratch/img/favicon.ico" />
<link rel="stylesheet" type="text/css" href="/Scratch/assets/css/main.css" />
<link rel="stylesheet" type="text/css" href="/Scratch/css/twilight.css" />
<link rel="stylesheet" type="text/css" href="/Scratch/css/idc.css" />
<link rel="alternate" type="application/rss+xml" title="RSS" href="http://feeds.feedburner.com/yannespositocomfr"/>
<link rel="alternate" lang="fr" xml:lang="fr" title="Synchronisation avec mobileme (2)" type="text/html" hreflang="fr" href="/Scratch/fr/blog/2009-10-28-custom-website-synchronisation-with-mobileme--2-/" />
<link rel="alternate" lang="en" xml:lang="en" title="custom website synchronisation with mobileme (2)" type="text/html" hreflang="en" href="/Scratch/en/blog/2009-10-28-custom-website-synchronisation-with-mobileme--2-/" />
<script type="text/javascript" src="/Scratch/js/jquery-1.3.1.min.js"></script>
<script type="text/javascript" src="/Scratch/js/jquery.cookie.js"></script>
<script type="text/javascript" src="/Scratch/js/index.js"></script>
<!--[if lt IE 9]>
<script src="http://ie7-js.googlecode.com/svn/version/2.1(beta4)/IE9.js"></script>
<![endif]-->
<title>Synchronisation avec mobileme (2)</title>
</head>
<body lang="fr" class="article">
<script type="text/javascript">// <![CDATA[
document.write('<div id="blackpage"><img src="/Scratch/img/loading.gif" alt="Chargement en cours..."/></div>');
// ]]>
</script>
<div id="content">
<div id="choix">
<div class="return"><a href="#entete">&darr; Menu &darr;</a></div>
<div id="choixlang">
<a href="/Scratch/en/blog/2009-10-28-custom-website-synchronisation-with-mobileme--2-/" onclick="setLanguage('en')">in English</a>
</div>
<div class="flush"></div>
</div>
<div id="titre">
<h1>
Synchronisation avec mobileme (2)
</h1>
</div>
<div class="flush"></div>
<div class="flush"></div>
<div id="afterheader">
<div class="corps">
<p>Jai déjà discuté de la façon dont je <a href="/Scratch/fr/blog/10_Synchronize_Custom_WebSite_with_mobileMe">synchronise mon site web sur mobileme</a>. Jai amélioré mon script pour le rendre incrémental.</p>
<p>Voici mon script, il créé tout dabord un fichier qui contient la liste des fichiers avec leur <em>hash</em>. Afin de les comparer avec ceux qui sont en ligne sans avoir à les parcourir. Ensuite pour chaque fichier qui semble différent, je met à jour le contenu.</p>
<p>Cependant même avec ce script jai encore des problèmes. Dû à webdav. En particulier le renommage de répertoire. Par exemple&nbsp;:</p>
<div><pre class="twilight">
mv folder folder2
</pre></div>
<p>Retourne OK et pourtant&nbsp;: </p>
<div><pre class="twilight">
$ ls
folder folder2
</pre></div>
<p>Bouuhh…</p>
<p>Pour résoudre ce type de problèmes jutilise un <em>framework</em> en zsh. Il résout presque tous les problèmes liés à webdav à lexception du renommage de répertoire.</p>
<div><div class="code"><div class="file"><a href="/Scratch/fr/blog/2009-10-28-custom-website-synchronisation-with-mobileme--2-/code/webdav-framework"> &#x27A5; webdav-framework </a></div><div class="withfile">
<pre class="twilight">
<span class="Comment"><span class="Comment">#</span>!/usr/bin/env zsh</span>
function samelineprint {
print -n -P -- <span class="String"><span class="String">&quot;</span>\r<span class="StringVariable"><span class="StringVariable">$</span>*</span><span class="String">&quot;</span></span>
}
<span class="Comment"><span class="Comment">#</span> avec 1 essai par seconde: 300 = 5 minutes</span>
maxessais=300
<span class="Comment"><span class="Comment">#</span> try to create a directory until success</span>
function trymkdir {
target=<span class="String"><span class="String">&quot;</span><span class="StringVariable"><span class="StringVariable">$</span>1</span><span class="String">&quot;</span></span>
print -- mkdir -p <span class="Variable"><span class="Variable">$</span>target</span>
local essai=1
<span class="Keyword">while</span> <span class="Keyword">!</span> mkdir -p <span class="Variable"><span class="Variable">$</span>target</span><span class="Keyword">;</span> <span class="Keyword">do</span>
samelineprint <span class="String"><span class="String">&quot;</span>Echec: essai n°<span class="StringVariable"><span class="StringVariable">$</span>essai</span><span class="String">&quot;</span></span>
((essai++))
((essai<span class="Keyword">&gt;</span>maxessais)) <span class="Keyword">&amp;&amp;</span> exit 5
<span class="Keyword">done</span>
print
}
<span class="Comment"><span class="Comment">#</span> try to copy until success</span>
function trycp {
element=<span class="String"><span class="String">&quot;</span><span class="StringVariable"><span class="StringVariable">$</span>1</span><span class="String">&quot;</span></span>
target=<span class="String"><span class="String">&quot;</span><span class="StringVariable"><span class="StringVariable">$</span>2</span><span class="String">&quot;</span></span>
<span class="Keyword">if</span> [[ <span class="Keyword">!</span> -d <span class="Variable"><span class="Variable">${</span>target:h<span class="Variable">}</span></span> ]]<span class="Keyword">;</span> <span class="Keyword">then</span>
trymkdir <span class="Variable"><span class="Variable">${</span>target:h<span class="Variable">}</span></span>
<span class="Keyword">fi</span>
local essai=1
print -- cp <span class="Variable"><span class="Variable">$</span>element</span> <span class="Variable"><span class="Variable">$</span>target</span>
<span class="Keyword">while</span> <span class="Keyword">!</span> <span class="Constant">\c</span>p <span class="Variable"><span class="Variable">$</span>element</span> <span class="Variable"><span class="Variable">$</span>target</span><span class="Keyword">;</span> <span class="Keyword">do</span>
samelineprint <span class="String"><span class="String">&quot;</span>Echec: essai n°<span class="StringVariable"><span class="StringVariable">$</span>essai</span><span class="String">&quot;</span></span>
((essai++))
((essai<span class="Keyword">&gt;</span>maxessais)) <span class="Keyword">&amp;&amp;</span> exit 5
<span class="Keyword">done</span>
print
}
<span class="Comment"><span class="Comment">#</span> try to remove until success</span>
function tryrm {
target=<span class="String"><span class="String">&quot;</span><span class="StringVariable"><span class="StringVariable">$</span>1</span><span class="String">&quot;</span></span>
local essai=1
local options=<span class="String"><span class="String">'</span><span class="String">'</span></span>
[[ -d <span class="Variable"><span class="Variable">$</span>target</span> ]] <span class="Keyword">&amp;&amp;</span> options=<span class="String"><span class="String">'</span>-rf<span class="String">'</span></span>
print -- rm <span class="Variable"><span class="Variable">$</span>options</span> <span class="Variable"><span class="Variable">$</span>target</span>
<span class="Keyword">while</span> <span class="Keyword">!</span> rm <span class="Variable"><span class="Variable">$</span>options</span> <span class="Variable"><span class="Variable">$</span>target</span><span class="Keyword">;</span> <span class="Keyword">do</span>
samelineprint <span class="String"><span class="String">&quot;</span>Echec: essai n°<span class="StringVariable"><span class="StringVariable">$</span>essai</span><span class="String">&quot;</span></span>
((essai++))
((essai<span class="Keyword">&gt;</span>maxessais)) <span class="Keyword">&amp;&amp;</span> exit 5
<span class="Keyword">done</span>
essai=1
<span class="Keyword">while</span> [[ -e <span class="Variable"><span class="Variable">$</span>element</span> ]]<span class="Keyword">;</span> <span class="Keyword">do</span>
samelineprint <span class="String"><span class="String">&quot;</span>rm reussi mais fichier source non disparu n°<span class="StringVariable"><span class="StringVariable">$</span>essai</span><span class="String">&quot;</span></span>
sleep 1
((essai++))
((essai<span class="Keyword">&gt;</span>maxessais)) <span class="Keyword">&amp;&amp;</span> exit 5
<span class="Keyword">done</span>
print
}
<span class="Comment"><span class="Comment">#</span> try to rename until success</span>
function tryrename {
element=<span class="String"><span class="String">&quot;</span><span class="StringVariable"><span class="StringVariable">$</span>1</span><span class="String">&quot;</span></span>
target=<span class="String"><span class="String">&quot;</span><span class="StringVariable"><span class="StringVariable">$</span>2</span><span class="String">&quot;</span></span>
local essai=1
<span class="Keyword">while</span> [[ -e <span class="Variable"><span class="Variable">$</span>target</span> ]]<span class="Keyword">;</span> <span class="Keyword">do</span>
samelineprint <span class="String"><span class="String">&quot;</span>Echec n°<span class="StringVariable"><span class="StringVariable">$</span>essai</span> le fichier <span class="StringVariable"><span class="StringVariable">$</span>target</span> existe déjà<span class="String">&quot;</span></span>
((essai++))
((essai<span class="Keyword">&gt;</span>maxessais)) <span class="Keyword">&amp;&amp;</span> exit 5
sleep 1
<span class="Keyword">done</span>
print -- mv <span class="Variable"><span class="Variable">$</span>element</span> <span class="Variable"><span class="Variable">$</span>target</span>
<span class="Keyword">while</span> <span class="Keyword">!</span> mv <span class="Variable"><span class="Variable">$</span>element</span> <span class="Variable"><span class="Variable">$</span>target</span><span class="Keyword">;</span> <span class="Keyword">do</span>
samelineprint <span class="String"><span class="String">&quot;</span>Echec: essai n°<span class="StringVariable"><span class="StringVariable">$</span>essai</span><span class="String">&quot;</span></span>
((essai++))
((essai<span class="Keyword">&gt;</span>maxessais)) <span class="Keyword">&amp;&amp;</span> exit 4
<span class="Keyword">done</span>
essai=1
<span class="Keyword">while</span> [[ -e <span class="Variable"><span class="Variable">$</span>element</span> ]]<span class="Keyword">;</span> <span class="Keyword">do</span>
samelineprint <span class="String"><span class="String">&quot;</span>mv reussi mais fichier source non disparu n°<span class="StringVariable"><span class="StringVariable">$</span>essai</span><span class="String">&quot;</span></span>
sleep 1
((essai++))
((essai<span class="Keyword">&gt;</span>maxessais)) <span class="Keyword">&amp;&amp;</span> exit 5
<span class="Keyword">done</span>
print
}
<span class="Comment"><span class="Comment">#</span> try to move until success</span>
function trymv {
element=<span class="String"><span class="String">&quot;</span><span class="StringVariable"><span class="StringVariable">$</span>1</span><span class="String">&quot;</span></span>
target=<span class="String"><span class="String">&quot;</span><span class="StringVariable"><span class="StringVariable">$</span>2</span><span class="String">&quot;</span></span>
local essai=1
print -- mv <span class="Variable"><span class="Variable">$</span>element</span> <span class="Variable"><span class="Variable">$</span>target</span>
<span class="Keyword">while</span> <span class="Keyword">!</span> mv <span class="Variable"><span class="Variable">$</span>element</span> <span class="Variable"><span class="Variable">$</span>target</span><span class="Keyword">;</span> <span class="Keyword">do</span>
samelineprint <span class="String"><span class="String">&quot;</span>Echec: essai n°<span class="StringVariable"><span class="StringVariable">$</span>essai</span><span class="String">&quot;</span></span>
((essai++))
((essai<span class="Keyword">&gt;</span>maxessais)) <span class="Keyword">&amp;&amp;</span> exit 5
<span class="Keyword">done</span>
essai=1
<span class="Keyword">while</span> [[ -e <span class="Variable"><span class="Variable">$</span>element</span> ]]<span class="Keyword">;</span> <span class="Keyword">do</span>
samelineprint <span class="String"><span class="String">&quot;</span>mv reussi mais fichier source non disparu n°<span class="StringVariable"><span class="StringVariable">$</span>essai</span><span class="String">&quot;</span></span>
sleep 1
((essai++))
((essai<span class="Keyword">&gt;</span>maxessais)) <span class="Keyword">&amp;&amp;</span> exit 5
<span class="Keyword">done</span>
print
}
</pre>
</div></div></div>
<p>Et voici le code qui me permet de synchroniser mon site web. Il y a une partie un peu incompréhensible. Cest pour enlever les mail réencodés par le filtre bluecloth qui est une implémentation de markdown. Mes mails, sont encodés à chaque fois de façon différente à chaque réengendrement de page html. Cest pourquoi je les enlève pour ne pas les <em>uploadés</em> inutilement à chaque fois.</p>
<div><div class="code"><div class="file"><a href="/Scratch/fr/blog/2009-10-28-custom-website-synchronisation-with-mobileme--2-/code/publish"> &#x27A5; publish </a></div><div class="withfile">
<pre class="twilight">
<span class="Comment"><span class="Comment">#</span>!/usr/bin/env zsh</span>
<span class="Comment"><span class="Comment">#</span> Script synchronisant le site sur me.com</span>
<span class="Comment"><span class="Comment">#</span> normalement, le site est indisponible le moins de temps possible</span>
<span class="Comment"><span class="Comment">#</span> le temps de deux renommages de répertoire</span>
<span class="Comment"><span class="Comment">#</span> get configuration</span>
<span class="Comment"><span class="Comment">#</span> mostly directories</span>
source <span class="Variable"><span class="Variable">$</span>0</span>:h/config
<span class="Comment"><span class="Comment">#</span> get trycp function (copy until success)</span>
source <span class="Variable"><span class="Variable">$</span>0</span>:h/webdav-framework
<span class="Keyword">if</span> [[ <span class="Variable"><span class="Variable">$</span>1</span> <span class="Keyword">==</span> <span class="String"><span class="String">'</span>-h<span class="String">'</span></span> ]]<span class="Keyword">;</span> <span class="Keyword">then</span>
print -- <span class="String"><span class="String">&quot;</span>usage : <span class="StringVariable"><span class="StringVariable">$</span>0</span>:h [-h|-s|-d]<span class="String">&quot;</span></span>
print -- <span class="String"><span class="String">&quot;</span> -a sychronise aussi l'index<span class="String">&quot;</span></span>
print -- <span class="String"><span class="String">&quot;</span> -h affiche l'aide<span class="String">&quot;</span></span>
print -- <span class="String"><span class="String">&quot;</span> -d modification directe (pas de swap)<span class="String">&quot;</span></span>
print -- <span class="String"><span class="String">&quot;</span> -s swappe simplement les répertoires<span class="String">&quot;</span></span>
<span class="Keyword">fi</span>
<span class="Comment"><span class="Comment">#</span> publication incrementale</span>
function incrementalPublish {
local ydestRep=<span class="Variable"><span class="Variable">$</span>destRep</span><span class="Variable"><span class="Variable">$</span>suffix</span>
localRef=<span class="String"><span class="String">&quot;</span><span class="StringVariable"><span class="StringVariable">$</span>srcRep</span>/map.yrf<span class="String">&quot;</span></span>
print -- <span class="String"><span class="String">&quot;</span>Creation du fichier de references<span class="String">&quot;</span></span>
create-reference-file.sh <span class="Keyword">&gt;</span> <span class="Variable"><span class="Variable">$</span>localRef</span>
remoteRef=<span class="String"><span class="String">&quot;</span>/tmp/remoteSiteMapRef.<span class="StringVariable"><span class="StringVariable">$</span>$</span>.yrf<span class="String">&quot;</span></span>
<span class="Keyword">if</span> [[ <span class="Keyword">!</span> -e <span class="String"><span class="String">&quot;</span><span class="StringVariable"><span class="StringVariable">$</span>ydestRep</span>/map.yrf<span class="String">&quot;</span></span> ]]<span class="Keyword">;</span> <span class="Keyword">then</span>
<span class="Comment"><span class="Comment">#</span> pas de fichier de reference sur la cible</span>
print -- <span class="String"><span class="String">&quot;</span>pas de fichier de reference sur la cible, passage en mode rsync<span class="String">&quot;</span></span>
rsyncPublish
swap
<span class="Keyword">else</span>
trycp <span class="String"><span class="String">&quot;</span><span class="StringVariable"><span class="StringVariable">$</span>ydestRep</span>/map.yrf<span class="String">&quot;</span></span> <span class="String"><span class="String">&quot;</span><span class="StringVariable"><span class="StringVariable">$</span>remoteRef</span><span class="String">&quot;</span></span>
typeset -U filesToUpdate
filesToUpdate=( <span class="String"><span class="String">$(</span>diff <span class="StringVariable"><span class="StringVariable">$</span>localRef</span> <span class="StringVariable"><span class="StringVariable">$</span>remoteRef</span> <span class="Keyword">|</span> awk <span class="String"><span class="String">'</span>/^[&lt;&gt;]/ {print $2}<span class="String">'</span></span> <span class="String">)</span></span> )
<span class="Keyword">if</span> ((<span class="Variable"><span class="Variable">${</span>#filesToUpdate<span class="Variable">}</span></span> == 1))<span class="Keyword">;</span> <span class="Keyword">then</span>
print -- <span class="String"><span class="String">&quot;</span>Seul le fichier <span class="StringVariable"><span class="StringVariable">${</span>filesToUpdate<span class="StringVariable">}</span></span> sera téléversé<span class="String">&quot;</span></span>
<span class="Keyword">elif</span> ((<span class="Variable"><span class="Variable">${</span>#filesToUpdate<span class="Variable">}</span></span><span class="Keyword">&lt;</span>10))<span class="Keyword">;</span> <span class="Keyword">then</span>
print -- <span class="String"><span class="String">&quot;</span><span class="StringVariable"><span class="StringVariable">${</span>#filesToUpdate<span class="StringVariable">}</span></span> fichiers seront téléversés :<span class="String">&quot;</span></span>
print -- <span class="String"><span class="String">&quot;</span><span class="StringVariable"><span class="StringVariable">${</span>filesToUpdate<span class="StringVariable">}</span></span><span class="String">&quot;</span></span>
<span class="Keyword">else</span>
print -- <span class="String"><span class="String">&quot;</span><span class="StringVariable"><span class="StringVariable">${</span>#filesToUpdate<span class="StringVariable">}</span></span> fichiers seront téléversés<span class="String">&quot;</span></span>
<span class="Keyword">fi</span>
<span class="Comment"><span class="Comment">#</span> copy all file with some differences</span>
<span class="Comment"><span class="Comment">#</span> except the map in case of error</span>
<span class="Keyword">for</span> element <span class="Keyword">in</span> <span class="Variable"><span class="Variable">$</span>filesToUpdate</span><span class="Keyword">;</span> <span class="Keyword">do</span>
<span class="Keyword">if</span> [[ <span class="Variable"><span class="Variable">$</span>element</span> <span class="Keyword">==</span> <span class="String"><span class="String">&quot;</span>/map.yrf<span class="String">&quot;</span></span> ]]<span class="Keyword">;</span> <span class="Keyword">then</span>
<span class="Keyword">continue</span>
<span class="Keyword">fi</span>
<span class="Keyword">if</span> [[ -e <span class="Variable"><span class="Variable">$</span>srcRep</span><span class="Variable"><span class="Variable">$</span>element</span> ]]<span class="Keyword">;</span> <span class="Keyword">then</span>
trycp <span class="Variable"><span class="Variable">$</span>srcRep</span><span class="Variable"><span class="Variable">$</span>element</span> <span class="Variable"><span class="Variable">$</span>ydestRep</span><span class="Variable"><span class="Variable">$</span>element</span>
<span class="Keyword">else</span>
tryrm <span class="Variable"><span class="Variable">$</span>ydestRep</span><span class="Variable"><span class="Variable">$</span>element</span>
<span class="Keyword">fi</span>
<span class="Keyword">done</span>
<span class="Comment"><span class="Comment">#</span> if all went fine, copy the map file</span>
trycp <span class="Variable"><span class="Variable">$</span>srcRep</span>/map.yrf <span class="Variable"><span class="Variable">$</span>ydestRep</span>/map.yrf
<span class="Comment"><span class="Comment">#</span> remove the temporary file</span>
<span class="Constant">\r</span>m <span class="Variable"><span class="Variable">$</span>remoteRef</span>
<span class="Comment"><span class="Comment">#</span> if we have used the tmp directory we swap</span>
<span class="Keyword">if</span> [[ <span class="String"><span class="String">&quot;</span><span class="StringVariable"><span class="StringVariable">$</span>suffix</span><span class="String">&quot;</span></span> <span class="Keyword">!=</span> <span class="String"><span class="String">&quot;</span><span class="String">&quot;</span></span> ]]<span class="Keyword">;</span> <span class="Keyword">then</span>
swap
<span class="Keyword">fi</span>
<span class="Keyword">fi</span>
}
<span class="Comment"><span class="Comment">#</span> publication via rsync</span>
function rsyncPublish {
result=1
essai=1
<span class="Keyword">while</span> (( <span class="Variable"><span class="Variable">$</span>result</span> <span class="Keyword">&gt;</span> 0 ))<span class="Keyword">;</span> <span class="Keyword">do</span>
print -- rsync -arv <span class="Variable"><span class="Variable">$</span>srcRep</span>/ <span class="Variable"><span class="Variable">$</span>destRep</span>.tmp
<span class="Keyword">if</span> ((<span class="Keyword">!</span>testmode))<span class="Keyword">;</span> <span class="Keyword">then</span>
rsync -arv <span class="Variable"><span class="Variable">$</span>srcRep</span>/ <span class="Variable"><span class="Variable">$</span>destRep</span>.tmp
<span class="Keyword">fi</span>
result=<span class="Variable"><span class="Variable">$</span>?</span>
<span class="Keyword">if</span> (( <span class="Variable"><span class="Variable">$</span>result</span> <span class="Keyword">&gt;</span> 0 ))<span class="Keyword">;</span> <span class="Keyword">then</span>
print -P -- <span class="String"><span class="String">&quot;</span>%BEchec du rsync%b (essai n°<span class="StringVariable"><span class="StringVariable">$</span>essai</span>)<span class="String">&quot;</span></span> <span class="Keyword">&gt;&amp;2</span>
<span class="Keyword">fi</span>
((essai++))
<span class="Keyword">done</span>
}
<span class="Comment"><span class="Comment">#</span> swap</span>
function swap {
print -P -- <span class="String"><span class="String">&quot;</span>%B[Directory Swap (tmp &lt;=&gt; target)]%b<span class="String">&quot;</span></span>
[[ -e <span class="Variable"><span class="Variable">$</span>destRep</span>.old ]] <span class="Keyword">&amp;&amp;</span> tryrm <span class="Variable"><span class="Variable">$</span>destRep</span>.old
print -- <span class="String"><span class="String">&quot;</span> renommage du repertoire sandard vers le .old<span class="String">&quot;</span></span>
tryrename <span class="Variable"><span class="Variable">$</span>destRep</span> <span class="Variable"><span class="Variable">$</span>destRep</span>.old
print -- <span class="String"><span class="String">&quot;</span> renommage du repertoire tmp (nouveau) vers le standard<span class="String">&quot;</span></span>
print -P -- <span class="String"><span class="String">&quot;</span>%B[Site Indisponible]%b <span class="String"><span class="String">$(</span>date<span class="String">)</span></span><span class="String">&quot;</span></span>
tryrename <span class="Variable"><span class="Variable">$</span>destRep</span>.tmp <span class="Variable"><span class="Variable">$</span>destRep</span>
print -P -- <span class="String"><span class="String">&quot;</span>%B[Site Disponible]%b <span class="String"><span class="String">$(</span>date<span class="String">)</span></span><span class="String">&quot;</span></span>
print -- <span class="String"><span class="String">&quot;</span> renommage du repertoire old vers le tmp<span class="String">&quot;</span></span>
tryrename <span class="Variable"><span class="Variable">$</span>destRep</span>.old <span class="Variable"><span class="Variable">$</span>destRep</span>.tmp
print -P -- <span class="String"><span class="String">&quot;</span> publication terminée<span class="String">&quot;</span></span>
}
print -- <span class="String"><span class="String">&quot;</span>Root = <span class="StringVariable"><span class="StringVariable">$</span>webroot</span><span class="String">&quot;</span></span>
print -- <span class="String"><span class="String">&quot;</span>Dest = <span class="StringVariable"><span class="StringVariable">$</span>destRep</span><span class="String">&quot;</span></span>
<span class="Keyword">if</span> [[ <span class="String"><span class="String">&quot;</span><span class="StringVariable"><span class="StringVariable">$</span>1</span><span class="String">&quot;</span></span> = <span class="String"><span class="String">&quot;</span>-s<span class="String">&quot;</span></span> ]]<span class="Keyword">;</span> <span class="Keyword">then</span>
swap
<span class="Keyword">else</span>
print -P <span class="String"><span class="String">&quot;</span>Copie de l'init<span class="String">&quot;</span></span>
<span class="Constant">\c</span>p -f <span class="Variable"><span class="Variable">$</span>webroot</span>/Scratch/multi/index.html <span class="Variable"><span class="Variable">$</span>webroot</span>/index.html
<span class="Keyword">if</span> [[ <span class="String"><span class="String">&quot;</span><span class="StringVariable"><span class="StringVariable">$</span>1</span><span class="String">&quot;</span></span> = <span class="String"><span class="String">&quot;</span>-d<span class="String">&quot;</span></span> ]]<span class="Keyword">;</span> <span class="Keyword">then</span>
suffix=<span class="String"><span class="String">&quot;</span><span class="String">&quot;</span></span>
<span class="Keyword">else</span>
suffix=<span class="String"><span class="String">&quot;</span>.tmp<span class="String">&quot;</span></span>
<span class="Keyword">fi</span>
print -P -- <span class="String"><span class="String">&quot;</span>%BSync%b[<span class="StringVariable"><span class="StringVariable">${</span>Root:t<span class="StringVariable">}</span></span> =&gt; <span class="StringVariable"><span class="StringVariable">${</span>destRep:t<span class="StringVariable">}</span></span><span class="StringVariable"><span class="StringVariable">$</span>suffix</span>]<span class="String">&quot;</span></span>
incrementalPublish
<span class="Keyword">fi</span>
</pre>
</div></div></div>
<p>Cest ma façon de remplacer <code>rsync</code> avec des filesystem qui ne permettent pas de lutiliser. Jespère que ça pourra vous être utile. Je serai heureux de savoir si quelquun à une idée sur comment gérer le problème de renommage de répertoire avec webdav.</p>
</div>
<div id="choixrss">
<a id="rss" href="http://feeds.feedburner.com/yannespositocomfr">
s'abonner
</a>
</div>
<script type="text/javascript">
$(document).ready(function(){
$('#comment').hide();
$('#clickcomment').click(showComments);
});
function showComments() {
$('#comment').show();
$('#clickcomment').fadeOut();
}
document.write('<div id="clickcomment">Commentaires</div>');
</script>
<div class="flush"></div>
<div class="corps" id="comment">
<h2 class="first">commentaires</h2>
<noscript>
Vous devez activer javascript pour commenter.
</noscript>
<script type="text/javascript">
var idcomments_acct = 'a307f0044511ff1b5cfca573fc0a52e7';
var idcomments_post_id = '/Scratch/fr/blog/2009-10-28-custom-website-synchronisation-with-mobileme--2-/';
var idcomments_post_url = 'http://yannesposito.com/Scratch/fr/blog/2009-10-28-custom-website-synchronisation-with-mobileme--2-/';
</script>
<span id="IDCommentsPostTitle" style="display:none"></span>
<script type='text/javascript' src='/Scratch/js/genericCommentWrapperV2.js'></script>
</div>
<div id="entete" class="corps_spaced">
<div id="liens">
<ul><li><a href="/Scratch/fr/">Bienvenue</a></li>
<li><a href="/Scratch/fr/blog/">Blog</a></li>
<li><a href="/Scratch/fr/softwares/">Softwares</a></li>
<li><a href="/Scratch/fr/about/">À propos</a></li></ul>
</div>
<div class="flush"></div>
<hr/>
<div id="next_before_articles">
<div id="previous_articles">
articles précédents
<div class="previous_article">
<a href="/Scratch/fr/blog/2009-10-Wait-to-hide-a-menu-in-jQuery/"><span class="nicer">«</span>&nbsp;Un menu qui attends avant de se cacher</a>
</div>
<div class="previous_article">
<a href="/Scratch/fr/blog/2009-10-launch-daemon-from-command-line/"><span class="nicer">«</span>&nbsp;lancer un démon en ligne de commande</a>
</div>
<div class="previous_article">
<a href="/Scratch/fr/blog/2009-10-Focus-vs-Minimalism/"><span class="nicer">«</span>&nbsp;<em>Focus</em> &gt; Minimalisme</a>
</div>
</div>
<div id="next_articles">
articles suivants
<div class="next_article">
<a href="/Scratch/fr/blog/2009-10-30-How-to-handle-evil-IE/">Une CSS pour IE seulement&nbsp;<span class="nicer">»</span></a>
</div>
<div class="next_article">
<a href="/Scratch/fr/blog/2009-11-12-Git-for-n00b/">Git pour les nuls&nbsp;<span class="nicer">»</span></a>
</div>
<div class="next_article">
<a href="/Scratch/fr/blog/2009-12-06-iphone-call-filter/">Filtrage d'appel avec l'iPhone&nbsp;<span class="nicer">»</span></a>
</div>
</div>
<div class="flush"></div>
</div>
</div>
<div id="bottom">
<div>
<a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/deed.fr">Droits de reproduction ©, Yann Esposito</a>
</div>
<div id="lastmod">
Écrit le : 28/10/2009
modifié le : 20/04/2011
</div>
<div>
Site entièrement réalisé avec
<a href="http://www.vim.org">Vim</a>
et
<a href="http://nanoc.stoneship.org">nanoc</a>
</div>
<div>
<a href="/Scratch/fr/validation/">Validation</a>
<a href="http://validator.w3.org/check?uri=referer"> [xhtml] </a>
.
<a href="http://jigsaw.w3.org/css-validator/check/referer?profile=css3"> [css] </a>
.
<a href="http://validator.w3.org/feed/check.cgi?url=http%3A//yannesposito.com/Scratch/fr/blog/feed/feed.xml">[rss]</a>
</div>
</div>
<div class="clear"></div>
</div>
</body>
</html>