19a747e4fSDavid du Colombier#!/bin/rc 29a747e4fSDavid du Colombier 39a747e4fSDavid du Colombierrfork en 49a747e4fSDavid du Colombier 59a747e4fSDavid du Colombierfn usage { 6*3421e8c4SDavid du Colombier echo 'usage: replica/pull [-nv] [-c name] [-s name] replica-name [paths]' >[1=2] 79a747e4fSDavid du Colombier exit usage 89a747e4fSDavid du Colombier} 99a747e4fSDavid du Colombier 109a747e4fSDavid du Colombier. /rc/bin/replica/defs $* 119a747e4fSDavid du Colombier 129a747e4fSDavid du Colombierneed clientlog serverlog clientdb clientroot serverroot 139a747e4fSDavid du Colombier 149a747e4fSDavid du Colombier# mount the server file system, update the log 159a747e4fSDavid du Colombiermust servermount 169a747e4fSDavid du Colombiermust serverupdate 179a747e4fSDavid du Colombiermust clientmount 189a747e4fSDavid du Colombier 199a747e4fSDavid du Colombier# download the log 209a747e4fSDavid du Colombiern=`{ls -l $clientlog >[2]/dev/null |awk '{print $6}'} 219a747e4fSDavid du Colombiers=`{ls -l $serverlog >[2]/dev/null |awk '{print $6}'} 229a747e4fSDavid du Colombierif(~ $n 0 || ~ $#n 0 || test $s -lt $n){ 236b6b9ac8SDavid du Colombier if(test -e $clientlog) must rm $clientlog 248847fb04SDavid du Colombier must fcp $serverlog $clientlog 259a747e4fSDavid du Colombier} 269a747e4fSDavid du Colombierif not{ 279a747e4fSDavid du Colombier m=`{echo $n-1024 | hoc} 289a747e4fSDavid du Colombier if(~ $m -*) 299a747e4fSDavid du Colombier m=0 309a747e4fSDavid du Colombier cmp -s $serverlog $clientlog $m $m 319a747e4fSDavid du Colombier x=$status 329a747e4fSDavid du Colombier switch($x){ 339a747e4fSDavid du Colombier case *': EOF' 349a747e4fSDavid du Colombier must tail +^$n^c $serverlog >>$clientlog 359a747e4fSDavid du Colombier case *': differ' 369a747e4fSDavid du Colombier must rm $clientlog 378847fb04SDavid du Colombier must fcp $serverlog $clientlog 389a747e4fSDavid du Colombier case '' 399a747e4fSDavid du Colombier ; 409a747e4fSDavid du Colombier case * 419a747e4fSDavid du Colombier fatal cmp: $x 429a747e4fSDavid du Colombier } 439a747e4fSDavid du Colombier} 449a747e4fSDavid du Colombier 459a747e4fSDavid du Colombier# normally we'd do this after applylog, but we want 469a747e4fSDavid du Colombier# applylog to be the last thing in this script, so we'll 479a747e4fSDavid du Colombier# do it here instead, compacting changes from the 489a747e4fSDavid du Colombier# _last_ applylog. 499a747e4fSDavid du Colombier 509a747e4fSDavid du Colombierndb=`{echo $clientdb | sed 's;(.*)/(.*);\1/_\2;'} 519a747e4fSDavid du Colombiermust replica/compactdb $clientdb >$ndb 529a747e4fSDavid du Colombiermv $ndb $clientdb 539a747e4fSDavid du Colombier 549a747e4fSDavid du Colombier# mount the client file system, apply the log 559a747e4fSDavid du Colombier# this is the last thing in the script and is execed so that 569a747e4fSDavid du Colombier# if replica/pull is overwritten nothing bad will happen. 579a747e4fSDavid du Colombier# applylog takes care of itself as far as protection against being overwritten. 589a747e4fSDavid du Colombierexec replica/applylog $opt $applyopt $clientdb $clientroot $serverroot $paths <$clientlog 59