You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

74 lines
2.0 KiB
Bash

1 year ago
#!/bin/sh
echo $PATH
ACTION=${1}
shift 1
usage() {
echo "usage: $0 sub-command"
echo "where sub-command is one of:"
echo " install Install the docker-backup"
}
do_install() {
local backup=`uci get docker-backup.@docker-backup[0].backup 2>/dev/null`
local restore=`uci get docker-backup.@docker-backup[0].restore 2>/dev/null`
local restore_container=`uci get docker-backup.@docker-backup[0].restore_container 2>/dev/null`
local backup_container=`uci get docker-backup.@docker-backup[0].backup_container 2>/dev/null`
local config_path=`uci get docker-backup.@docker-backup[0].config_path 2>/dev/null`
if [ "$backup" = "1" ]; then
echo "backing up containers!"
/usr/libexec/apps/docker-backup/docker-backup backup "$backup_container"
mv *.backup.files /opt/docker2/compose/docker-backup
mv *.backup.json /opt/docker2/compose/docker-backup
mv *.tar /opt/docker2/compose/docker-backup
fi
if [ "$restore" = "1" ]; then
echo "restoring containers!"
result=`/usr/libexec/apps/docker-backup/docker-backup restore ${config_path}"$restore_container" 2>&1`
if echo "$result" | grep -q "No such image"; then
image_name=$(echo "$result" | sed -n 's/.*No such image: \(.*\)\s*/\1/p')
echo "Pulling missing image: $image_name"
/usr/bin/docker pull $image_name
while ! /usr/bin/docker image inspect $image_name >/dev/null 2>&1; do
echo "Waiting for image to download..."
sleep 1
done
fi
/usr/libexec/apps/docker-backup/docker-backup restore ${config_path}"$restore_container"
if [ $? -eq 0 ]; then
echo "Restore successful"
else
echo "Restore failed"
exit 1
fi
fi
}
case ${ACTION} in
"install")
do_install
;;
"upgrade")
do_install
;;
"rm")
opkg remove luci-app-docker-backup
;;
"start" | "stop" | "restart")
do_install
;;
"status")
do_install
;;
"port")
do_install
;;
*)
usage
exit 1
;;
esac