Try restoring many

master v0.9
bel 2020-05-24 03:16:02 -06:00
parent 0421c8b8d9
commit cf008cd284
3 changed files with 23 additions and 2 deletions

View File

@ -39,12 +39,12 @@ ENV RUN_MIGRATIONS=0
ENV CREATE_ADMIN=0
COPY --from=builder /pause/pauser /pauser
COPY backup.sh /
COPY restore.sh /
USER root
### CRON BACKUPS
RUN true \
&& echo 'b=$(date +%Y%m%d%H%M%S); mkdir -p /mnt/save/$b; pg_dump $DATABASE_URL --clean > /mnt/save/$b/pg.dump || (rm -rf /mnt/save/$b; echo "backup failed; deleting $b"; exit 1); if du -sh /mnt/save/$b | grep -i "^[ ]*4.0K"; then rm -rf /mnt/save/$b; echo rm empty backup $b; fi' > /backup.sh \
&& echo 'b=$(find /mnt/save -type f | sort | tail -n 1); if [ -n "$b" ]; then echo restoring $b; psql $DATABASE_URL < "$b"; fi && service postgresql start;' > /restore.sh \
&& echo '0 4,8,12,16,20 * * * bash /backup.sh >> /var/log/cronj.log 2>&1' > /etc/cron.d/backups \
&& echo '' >> /etc/cron.d/backups \
&& chmod 0644 /etc/cron.d/backups \

12
backup.sh Executable file
View File

@ -0,0 +1,12 @@
b=$(date +%Y%m%d%H%M%S)
mkdir -p /mnt/save/$b
pg_dump $DATABASE_URL --clean > /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
rm -rf /mnt/save/$b
echo rm empty backup $b
fi

9
restore.sh Executable file
View File

@ -0,0 +1,9 @@
for b in $(find /mnt/save -type f | sort | tail -n 1); do
if [ -n "$b" ]; then
echo restoring $b
if psql $DATABASE_URL < "$b"; then
break
fi
fi
done
service postgresql start