~launchpad-pqm/launchpad/devel

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#! /bin/bash

# Update a local mirror of a remote archive using rsync/ssh.

# That's much faster than archive-mirror, but it may also leave the
# mirror in an inconsistent state if the remote archive was in
# transition during the sync.

# This script does not support mirroring a local archive to a remote
# location.

### Configuration ###

if [ -z $BAZ ] ; then
    export BAZ=baz
fi

# We have redundant configuration information (that is tested for
# sanity later on) because rsync use a different remote location
# format than tla and we have not implemented the parsing logic.

# Official name of the archive, registered name of the local mirror.
archive=rocketfuel@canonical.com

# Host of the remote archive.
srchost=chinstrap.warthogs.hbd.com

# Absolute path of the remote archive.
srcpath=/home/warthogs/archives/rocketfuel@canonical.com

# Absolute path of the local mirror.
dest=$($BAZ whereis-archive rocketfuel@canonical.com)

### No user-serviceable parts below ###

# Check that the configuration is consistent with the archive registry.

srcurl=sftp://"$srchost""$srcpath"
if test "$($BAZ archive-meta-info $srcurl/name)" != "$archive" ; then
    echo "error: source mismatch" >&2 ; exit 1
fi

if test "$($BAZ archive-meta-info $dest/name)" != "$archive" ; then
    echo "error: destination mismatch" >&2 ; exit 1
fi

# Perform sync.

# The options --times and --ignore-existing are mere optimizations.
# All the other options are required for proper operation.

rsync --recursive --times --delete --ignore-existing \
    --rsh=ssh --verbose --compress --exclude='/=meta-info/' "$@" \
    "$srchost":"$srcpath"/ "$dest"