Compare commits
2 Commits
2325c7aab5
...
db06336e67
| Author | SHA1 | Date | |
|---|---|---|---|
| db06336e67 | |||
| d92b574528 |
|
|
@ -1,8 +1,8 @@
|
|||
# Admin scripts
|
||||
|
||||
- deploy: create new container on host
|
||||
- preconfig: lxc hook
|
||||
- config: complete guest setup
|
||||
- preconfig: lxc hook (part of jtc)
|
||||
- config: complete guest setup (part of jtc)
|
||||
|
||||
## Todo
|
||||
|
||||
|
|
|
|||
77
admin/scripts/joj-container-backup
Executable file
77
admin/scripts/joj-container-backup
Executable file
|
|
@ -0,0 +1,77 @@
|
|||
#!/bin/bash
|
||||
|
||||
DATE=$(date +"%y%m%d")
|
||||
|
||||
bck_list() {
|
||||
|
||||
zfs list -t snapshot
|
||||
}
|
||||
|
||||
bck_update() {
|
||||
|
||||
LIST=($(zfs list -j -t snapshot | jq -rc '[ .datasets | .[] | {dataset: .dataset, version: .snapshot_name} ] | group_by(.dataset) | map({(.[0].dataset): .[-1].version}) | .[]' | tr "\n" " " | sed 's/[{}:"]/ /g'))
|
||||
for((i=0; i < ${#LIST[@]}; i+=2)); do
|
||||
zfs snapshot ${LIST[i]}@$DATE
|
||||
zfs send -v -i ${LIST[i]}@${LIST[$((i+1))]} ${LIST[i]}@$DATE | ssh grothendieck.nabla.li zfs recv -F backup/${LIST[i]/joj\/}
|
||||
done
|
||||
|
||||
}
|
||||
|
||||
bck_prune() {
|
||||
|
||||
LIST=($(zfs list -j -t snapshot | jq -rc '[ .datasets | .[] | {dataset: .dataset, version: .snapshot_name} ] | group_by(.dataset) | map({(.[0].dataset): .[-3].version}) | .[]' | tr "\n" " " | sed 's/[{}:"]/ /g'))
|
||||
|
||||
for((i=0; i < ${#LIST[@]}; i+=2)); do
|
||||
[ "${LIST[$((i+1))]}" != "null" ] && zfs destroy ${LIST[i]}@%${LIST[$((i+1))]}
|
||||
done
|
||||
|
||||
}
|
||||
|
||||
bck_init() {
|
||||
|
||||
zfs snapshot joj/$FS
|
||||
zfs send -v joj/$FS | ssh grothendieck.nabla.li zfs recv -F backup/$FS
|
||||
|
||||
}
|
||||
|
||||
test_net() {
|
||||
|
||||
if ! ping -c 1 grothendieck.nabla.li; then
|
||||
echo "Error: backup server cannot be reached."
|
||||
exit 20
|
||||
fi
|
||||
|
||||
}
|
||||
|
||||
case $1 in
|
||||
|
||||
list)
|
||||
bck_list
|
||||
;;
|
||||
|
||||
update)
|
||||
test_net
|
||||
bck_update
|
||||
;;
|
||||
|
||||
prune)
|
||||
bck_prune
|
||||
;;
|
||||
|
||||
init)
|
||||
test_net
|
||||
shift
|
||||
if [ -z "$1" ]; then
|
||||
echo "Error: specificy the course code"
|
||||
exit 10
|
||||
else
|
||||
FS=$1@$DATE
|
||||
bck_init
|
||||
fi
|
||||
;;
|
||||
|
||||
*)
|
||||
echo "Usage: $0 [list|init FSname|update|prune]"
|
||||
;;
|
||||
|
||||
esac
|
||||
Loading…
Reference in New Issue
Block a user