-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathrun.example.sh
133 lines (124 loc) · 3.14 KB
/
run.example.sh
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
#!/usr/bin/env bash
set -eu.o pipefail
EXE_PATH=snapper-replicator
REMOTE_USER=root
REMOTE_HOST=example.com
SSH_KEY=/home/foo/.ssh/id_rsa
REMOTE_CONFIG=root
LOCAL_CONFIG=root
REMOTE_WORKING_DIRECTORY=/tmp/snapper-replicator
LOCAL_WORKING_DIRECTORY=/tmp/snapper-replicator
OPERATION_MODE=pull
TRANSFER_MODE=rsync
SNAPPER_CLEANUP_ALGO=timeline
# create workdirs on local/remote
if [[ ! -f "$LOCAL_WORKING_DIRECTORY/$LOCAL_CONFIG/workdirs.done" ]]; then
$EXE_PATH -u $REMOTE_USER \
-h $REMOTE_HOST \
-k $SSH_KEY \
-rc $REMOTE_CONFIG \
-lc $LOCAL_CONFIG \
-rwd $REMOTE_WORKING_DIRECTORY \
-lwd $LOCAL_WORKING_DIRECTORY \
-m $OPERATION_MODE \
create-workdirs
else
echo "Workdirs exist"
fi
# run `snapper clean` on source
if [[ ! -f "$LOCAL_WORKING_DIRECTORY/$LOCAL_CONFIG/snapper-cleanup.done" ]]; then
$EXE_PATH -u $REMOTE_USER \
-h $REMOTE_HOST \
-k $SSH_KEY \
-rc $REMOTE_CONFIG \
-lc $LOCAL_CONFIG \
-rwd $REMOTE_WORKING_DIRECTORY \
-lwd $LOCAL_WORKING_DIRECTORY \
-m $OPERATION_MODE \
snapper-cleanup-source \
-alg $SNAPPER_CLEANUP_ALGO
else
echo "Snapper cleanup was run"
fi
# determine changes
if [[ ! -f "$LOCAL_WORKING_DIRECTORY/$LOCAL_CONFIG/pending_changes.json" ]]; then
$EXE_PATH -u $REMOTE_USER \
-h $REMOTE_HOST \
-k $SSH_KEY \
-rc $REMOTE_CONFIG \
-lc $LOCAL_CONFIG \
-rwd $REMOTE_WORKING_DIRECTORY \
-lwd $LOCAL_WORKING_DIRECTORY \
-m $OPERATION_MODE \
determine-changes
else
echo "Changes are precomputed"
fi
# dump snapshots on source to the workdir
if [[ ! -f "$LOCAL_WORKING_DIRECTORY/$LOCAL_CONFIG/dump.done" ]]; then
$EXE_PATH -u $REMOTE_USER \
-h $REMOTE_HOST \
-k $SSH_KEY \
-rc $REMOTE_CONFIG \
-lc $LOCAL_CONFIG \
-rwd $REMOTE_WORKING_DIRECTORY \
-lwd $LOCAL_WORKING_DIRECTORY \
-m $OPERATION_MODE \
dump \
-m incremental
else
echo "Dumps exist"
fi
# transfer snapshots to destination
if [[ ! -f "$LOCAL_WORKING_DIRECTORY/$LOCAL_CONFIG/sync.done" ]]; then
$EXE_PATH -u $REMOTE_USER \
-h $REMOTE_HOST \
-k $SSH_KEY \
-rc $REMOTE_CONFIG \
-lc $LOCAL_CONFIG \
-rwd $REMOTE_WORKING_DIRECTORY \
-lwd $LOCAL_WORKING_DIRECTORY \
-m $OPERATION_MODE \
synchronize \
-m $TRANSFER_MODE
else
echo "Sync was done"
fi
# restore snapshots on destination
if [[ ! -f "$LOCAL_WORKING_DIRECTORY/$LOCAL_CONFIG/restore.done" ]]; then
$EXE_PATH -u $REMOTE_USER \
-h $REMOTE_HOST \
-k $SSH_KEY \
-rc $REMOTE_CONFIG \
-lc $LOCAL_CONFIG \
-rwd $REMOTE_WORKING_DIRECTORY \
-lwd $LOCAL_WORKING_DIRECTORY \
-m $OPERATION_MODE \
restore
else
echo "Restore was done"
fi
# cleanup remote workdir
# cleanup local workdir
if [[ -f "$LOCAL_WORKING_DIRECTORY/$LOCAL_CONFIG/restore.done" ]]; then
$EXE_PATH -u $REMOTE_USER \
-h $REMOTE_HOST \
-k $SSH_KEY \
-rc $REMOTE_CONFIG \
-lc $LOCAL_CONFIG \
-rwd $REMOTE_WORKING_DIRECTORY \
-lwd $LOCAL_WORKING_DIRECTORY \
-m $OPERATION_MODE \
clean-remote-workdir
$EXE_PATH -u $REMOTE_USER \
-h $REMOTE_HOST \
-k $SSH_KEY \
-rc $REMOTE_CONFIG \
-lc $LOCAL_CONFIG \
-rwd $REMOTE_WORKING_DIRECTORY \
-lwd $LOCAL_WORKING_DIRECTORY \
-m $OPERATION_MODE \
clean-local-workdir
else
echo "Restore was done"
fi