Compare commits
9 Commits
| Author | SHA1 | Date |
|---|---|---|
|
|
7e8ac6bbd1 | |
|
|
3cca493648 | |
|
|
54ab5919e2 | |
|
|
3ac73e6d28 | |
|
|
b2cfba373e | |
|
|
9182e656bf | |
|
|
16b974afd1 | |
|
|
604b803f74 | |
|
|
ab0944cbff |
12
Dockerfile
12
Dockerfile
|
|
@ -16,7 +16,7 @@ RUN export DEBIAN_FRONTEND=noninteractive; \
|
|||
cron \
|
||||
postgresql postgresql-contrib \
|
||||
&& curl -L \
|
||||
https://github.com/miniflux/miniflux/releases/download/2.0.19/miniflux_2.0.19_amd64.deb \
|
||||
https://github.com/miniflux/miniflux/releases/download/2.0.36/miniflux_2.0.36_amd64.deb \
|
||||
> /miniflux.deb \
|
||||
&& dpkg -i /miniflux.deb \
|
||||
&& mkdir -p /mnt/save
|
||||
|
|
@ -41,6 +41,7 @@ ENV CREATE_ADMIN=0
|
|||
COPY --from=builder /pause/pauser /pauser
|
||||
COPY backup.sh /
|
||||
COPY restore.sh /
|
||||
COPY entrypoint.sh /
|
||||
|
||||
USER root
|
||||
### CRON BACKUPS
|
||||
|
|
@ -50,11 +51,4 @@ RUN true \
|
|||
&& chmod 0644 /etc/cron.d/backups \
|
||||
&& touch /var/log/cronj.log
|
||||
|
||||
ENTRYPOINT \
|
||||
service postgresql start \
|
||||
&& until psql $DATABASE_URL < /dev/null; do sleep 5; done \
|
||||
&& bash /restore.sh \
|
||||
&& miniflux -migrate \
|
||||
&& miniflux -create-admin \
|
||||
&& miniflux \
|
||||
& exec /pauser
|
||||
ENTRYPOINT bash /entrypoint.sh
|
||||
|
|
|
|||
10
backup.sh
10
backup.sh
|
|
@ -1,12 +1,16 @@
|
|||
b=$(date +%Y%m%d%H%M%S)
|
||||
mkdir -p /mnt/save/$b
|
||||
pg_dump $DATABASE_URL --clean > /mnt/save/$b/pg.dump \
|
||||
|| (
|
||||
(
|
||||
set -e
|
||||
pg_dump $DATABASE_URL --clean > /mnt/save/$b/.pg.dump
|
||||
mv /mnt/save/$b/{.,""}pg.dump
|
||||
) \
|
||||
|| (
|
||||
rm -rf /mnt/save/$b
|
||||
echo "backup failed; deleting $b"
|
||||
exit 1
|
||||
)
|
||||
if du -sh /mnt/save/$b | grep -Ei "^[ ]*(4|20).0K"; then
|
||||
if du -sh /mnt/save/$b | grep -Ei "^[ ]*(4|2.).0K"; then
|
||||
rm -rf /mnt/save/$b
|
||||
echo rm empty backup $b
|
||||
fi
|
||||
|
|
|
|||
|
|
@ -0,0 +1,38 @@
|
|||
#! /bin/bash
|
||||
|
||||
LOG=/tmp/bel.log
|
||||
|
||||
main() {
|
||||
echo "" > $LOG
|
||||
|
||||
ensure start_postgres
|
||||
until psql $DATABASE_URL < /dev/null; do sleep 5; done
|
||||
|
||||
bash /restore.sh
|
||||
|
||||
miniflux -migrate
|
||||
miniflux -create-admin
|
||||
ensure miniflux
|
||||
|
||||
exec /pauser
|
||||
}
|
||||
|
||||
start_postgres() {
|
||||
service postgresql start
|
||||
psql $DATABASE_URL
|
||||
}
|
||||
|
||||
ensure() {
|
||||
_ensure "$@" &>> $LOG & disown
|
||||
}
|
||||
|
||||
_ensure() {
|
||||
while true; do
|
||||
echo $(date): ensuring "$@" >&2
|
||||
"$@"
|
||||
sleep 3
|
||||
done
|
||||
}
|
||||
|
||||
main "$@"
|
||||
|
||||
22
restore.sh
22
restore.sh
|
|
@ -1,9 +1,23 @@
|
|||
for b in $(find /mnt/save -type f | sort | tail -n 1); do
|
||||
if [ -n "$b" ]; then
|
||||
echo restoring $b
|
||||
all_backups=($(find /mnt/save -not -path '*/\.*' -type f | sort -r))
|
||||
for ((i=${#all_backups[@]}-1; i>50; i--)); do
|
||||
echo rm old backpu ${all_backups[i]} >&2
|
||||
rm -f ${all_backups[i]} || true
|
||||
done
|
||||
|
||||
for b in "${all_backups[@]}"; do
|
||||
if [ -n "$b" ]; then
|
||||
du -sh "$b"
|
||||
if ! du -sh "$b" | grep -Ei "^[ \t]*[0-9][0-9]*[0-9]?(.0)?[mg]"; then
|
||||
echo would rm empty backup $b >&2
|
||||
set -x
|
||||
mv "$b" "${b%/*}/.${b##*/}"
|
||||
set +x
|
||||
continue
|
||||
fi
|
||||
echo restoring $b >&2
|
||||
if psql $DATABASE_URL < "$b"; then
|
||||
break
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
done
|
||||
service postgresql start
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Loading…
Reference in New Issue