Initial commit
This commit is contained in:
commit
4477516204
30
Dockerfile
Normal file
30
Dockerfile
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
FROM alpine:latest as alpine
|
||||||
|
RUN apk add --no-cache \
|
||||||
|
ca-certificates \
|
||||||
|
tzdata
|
||||||
|
|
||||||
|
FROM busybox:glibc
|
||||||
|
|
||||||
|
COPY --from=alpine /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt
|
||||||
|
COPY --from=alpine /usr/share/zoneinfo /usr/share/zoneinfo
|
||||||
|
|
||||||
|
# Get restic executable
|
||||||
|
ENV RESTIC_VERSION=0.9.5
|
||||||
|
ADD https://github.com/restic/restic/releases/download/v${RESTIC_VERSION}/restic_${RESTIC_VERSION}_linux_amd64.bz2 /
|
||||||
|
RUN bzip2 -d restic_${RESTIC_VERSION}_linux_amd64.bz2 && mv restic_${RESTIC_VERSION}_linux_amd64 /bin/restic && chmod +x /bin/restic
|
||||||
|
|
||||||
|
RUN mkdir -p /mnt/restic /var/spool/cron/crontabs /var/log
|
||||||
|
|
||||||
|
# /data is the dir where you have to put the data to be backed up
|
||||||
|
VOLUME /data
|
||||||
|
|
||||||
|
COPY backup.sh /bin/backup
|
||||||
|
COPY check.sh /bin/check
|
||||||
|
COPY entry.sh /entry.sh
|
||||||
|
|
||||||
|
RUN touch /var/log/cron.log
|
||||||
|
|
||||||
|
WORKDIR "/"
|
||||||
|
|
||||||
|
ENTRYPOINT ["/entry.sh"]
|
||||||
|
|
35
backup.sh
Normal file
35
backup.sh
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
start=`date +%s`
|
||||||
|
echo "Starting Backup at $(date +"%Y-%m-%d %H:%M:%S")"
|
||||||
|
echo "RESTIC_REPOSITORY: ${RESTIC_REPOSITORY}"
|
||||||
|
echo "BACKUP_CRON: ${BACKUP_CRON}"
|
||||||
|
echo "RESTIC_JOB_ARGS: ${RESTIC_JOB_ARGS}"
|
||||||
|
echo "RESTIC_FORGET_ARGS: ${RESTIC_FORGET_ARGS}"
|
||||||
|
|
||||||
|
restic backup /data ${RESTIC_JOB_ARGS}
|
||||||
|
rc=$?
|
||||||
|
echo "Finished backup at $(date)"
|
||||||
|
if [[ $rc == 0 ]]; then
|
||||||
|
echo "Backup Successful"
|
||||||
|
else
|
||||||
|
echo "Backup Failed with status ${rc}"
|
||||||
|
restic unlock
|
||||||
|
kill 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -n "${RESTIC_FORGET_ARGS}" ]; then
|
||||||
|
echo "Forget about old snapshots based on RESTIC_FORGET_ARGS = ${RESTIC_FORGET_ARGS}"
|
||||||
|
restic forget ${RESTIC_FORGET_ARGS}
|
||||||
|
rc=$?
|
||||||
|
echo "Finished forget at $(date)"
|
||||||
|
if [[ $rc == 0 ]]; then
|
||||||
|
echo "Forget Successfull"
|
||||||
|
else
|
||||||
|
echo "Forget Failed with Status ${rc}"
|
||||||
|
restic unlock
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
end=`date +%s`
|
||||||
|
echo "Finished Backup at $(date +"%Y-%m-%d %H:%M:%S") after $((end-start)) seconds"
|
4
build.sh
Normal file
4
build.sh
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
docker build -t llehouerou/restic-backup .
|
||||||
|
docker push llehouerou/restic-backup
|
21
check.sh
Normal file
21
check.sh
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
start=`date +%s`
|
||||||
|
echo "Starting Check at $(date +"%Y-%m-%d %H:%M:%S")"
|
||||||
|
echo "RESTIC_REPOSITORY: ${RESTIC_REPOSITORY}"
|
||||||
|
echo "CHECK_CRON: ${CHECK_CRON}"
|
||||||
|
echo "RESTIC_CHECK_ARGS: ${RESTIC_CHECK_ARGS}"
|
||||||
|
|
||||||
|
restic check ${RESTIC_CHECK_ARGS}
|
||||||
|
rc=$?
|
||||||
|
echo "Finished check at $(date)"
|
||||||
|
if [[ $rc == 0 ]]; then
|
||||||
|
echo "Backup Successful"
|
||||||
|
else
|
||||||
|
echo "Backup Failed with status ${rc}"
|
||||||
|
restic unlock
|
||||||
|
kill 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
end=`date +%s`
|
||||||
|
echo "Finished check at $(date +"%Y-%m-%d %H:%M:%S") after $((end-start)) seconds"
|
29
entry.sh
Normal file
29
entry.sh
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
#!bin/sh
|
||||||
|
echo "Starting container ..."
|
||||||
|
restic snapshots
|
||||||
|
rc=$?
|
||||||
|
if [[ $rc != 0 ]]; then
|
||||||
|
echo "Restic repository '${RESTIC_REPOSITORY}' does not exists. Running restic init."
|
||||||
|
restic init
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Setup backup cron job with cron expression BACKUP_CRON: ${BACKUP_CRON}"
|
||||||
|
echo "${BACKUP_CRON} flock -n /tmp/backup.lockfile /bin/backup >> /var/log/cron.log 2>&1" > /var/spool/cron/crontabs/root
|
||||||
|
echo "Setup check cron job with cron expression CHECK_CRON: ${CHECK_CRON}"
|
||||||
|
echo "${CHECK_CRON} flock /tmp/backup.lockfile /bin/check >> /var/log/cron.log 2>&1" >> /var/spool/cron/crontabs/root
|
||||||
|
|
||||||
|
cat /var/spool/cron/crontabs/root
|
||||||
|
|
||||||
|
# Make sure the file exists before we start tail
|
||||||
|
touch /var/log/cron.log
|
||||||
|
|
||||||
|
# start the cron deamon
|
||||||
|
crond
|
||||||
|
|
||||||
|
echo "Container started."
|
||||||
|
|
||||||
|
if [ -n "${RESTIC_BACKUPONSTART}" ]; then
|
||||||
|
flock -n /tmp/backup.lockfile /bin/backup
|
||||||
|
fi
|
||||||
|
|
||||||
|
tail -fn0 /var/log/cron.log
|
Loading…
Reference in New Issue
Block a user