diff --git a/.nix/flake.lock b/.nix/flake.lock index 2fb1cf9..1058284 100644 --- a/.nix/flake.lock +++ b/.nix/flake.lock @@ -5,11 +5,11 @@ "systems": "systems" }, "locked": { - "lastModified": 1731533236, - "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", + "lastModified": 1689068808, + "narHash": "sha256-6ixXo3wt24N/melDWjq70UuHQLxGV8jZvooRanIHXw0=", "owner": "numtide", "repo": "flake-utils", - "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", + "rev": "919d646de7be200f3bf08cb76ae1f09402b6f9b4", "type": "github" }, "original": { @@ -20,11 +20,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1738297584, - "narHash": "sha256-AYvaFBzt8dU0fcSK2jKD0Vg23K2eIRxfsVXIPCW9a0E=", + "lastModified": 1692190437, + "narHash": "sha256-yJUZzmzSmDYb9ONPnMQDru66RjZgGQZRvj3tQebkexk=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "9189ac18287c599860e878e905da550aa6dec1cd", + "rev": "9b2aa98db6b10503666a50f4eb93b2fc0d57bde5", "type": "github" }, "original": { diff --git a/Dockerfile b/Dockerfile index 7431fb8..ec8c180 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,27 +1,10 @@ -FROM kopia/kopia:0.19 +FROM kopia/kopia ENV DEBIAN_FRONTEND=noninteractive -RUN apt-get update && apt-get install -y gnupg2 wget lsb-release +RUN apt-get update && apt-get install -y cron && rm -rf /var/lib/apt/lists/* -RUN echo "deb http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list -RUN wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add - - -RUN apt-get update && apt-get install -y cron postgresql-client-17 lftp && rm -rf /var/lib/apt/lists/* - -ARG KOPIA_CRON_SCHEDULE -ENV KOPIA_CRON_SCHEDULE ${KOPIA_CRON_SCHEDULE} - -ARG KOPIA_USERNAME -ENV KOPIA_USERNAME ${KOPIA_USERNAME} - -ARG KOPIA_HOSTNAME -ENV KOPIA_HOSTNAME ${KOPIA_HOSTNAME} - -ARG KOPIA_PASSWORD -ENV KOPIA_PASSWORD ${KOPIA_PASSWORD} - -ARG KOPIA_BACKUP_PATH=/backup -ENV KOPIA_BACKUP_PATH ${KOPIA_BACKUP_PATH} +ARG KOPIA_CRON_TIMES="*/30 * * * *" +ENV KOPIA_CRON_TIMES ${KOPIA_CRON_TIMES} ADD run-backup.sh / ADD entrypoint.sh / diff --git a/build-and-push.sh b/build-and-push.sh index 9755429..dc606f2 100755 --- a/build-and-push.sh +++ b/build-and-push.sh @@ -1,10 +1,9 @@ #!/usr/bin/env sh -VERSION="0.15.0" +SKIP=no-commit-to-branch,prettier CI=false npx semantic-release -docker login git.molez.org +VERSION=`npx semantic-release --version` -docker image build --tag git.molez.org/mandlm/kopia:"${VERSION}" --tag git.molez.org/mandlm/kopia:latest . - -docker image push git.molez.org/mandlm/kopia:"${VERSION}" +docker image build --tag git.molez.org/mandlm/kopia:${VERSION} --tag git.molez.org/mandlm/kopia:latest . +docker image push git.molez.org/mandlm/kopia:${VERSION} docker image push git.molez.org/mandlm/kopia:latest diff --git a/entrypoint.sh b/entrypoint.sh index 6f688b2..5011134 100755 --- a/entrypoint.sh +++ b/entrypoint.sh @@ -1,21 +1,11 @@ -#!/bin/bash +#!/bin/sh -if [[ -z ${KOPIA_CRON_SCHEDULE} ]]; -then - echo "Running in one-shot mode" +CRONTAB=/etc/cron.d/kopia-backup - /run-backup.sh -else - CRONTAB=/etc/cron.d/kopia-backup +echo "Running cron with schedule ${KOPIA_CRON_TIMES}" - printenv > /etc/environment +echo "${KOPIA_CRON_TIMES} /run-backup.sh > /dev/stdout" > ${CRONTAB} +chmod 0644 ${CRONTAB} +crontab ${CRONTAB} - echo "Running cron with schedule ${KOPIA_CRON_SCHEDULE}" - - echo "${KOPIA_CRON_SCHEDULE} /run-backup.sh > /var/log/kopia-backup.log 2>&1" > ${CRONTAB} - chmod 0644 ${CRONTAB} - crontab ${CRONTAB} - - touch /var/log/kopia-backup.log - cron && tail -f /var/log/kopia-backup.log -fi +cron -f diff --git a/package-lock.json b/package-lock.json index 7e6b343..23fc5b7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "kopia", - "version": "0.14.0", + "version": "0.3.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "kopia", - "version": "0.14.0", + "version": "0.3.0", "devDependencies": { "@semantic-release/git": "^10.0.1", "semantic-release": "^21.0.2" diff --git a/package.json b/package.json index e2046fa..d417bcc 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "kopia", - "version": "0.14.0", + "version": "0.3.0", "private": true, "devDependencies": { "@semantic-release/git": "^10.0.1", diff --git a/run-backup.sh b/run-backup.sh index 13f6890..894501d 100755 --- a/run-backup.sh +++ b/run-backup.sh @@ -1,25 +1,10 @@ -#!/bin/bash +#!/bin/sh -echo "Running backup at $(date)" - -if [[ -v KOPIA_PG_DATABASE ]]; -then - echo "Dumping database ${KOPIA_PG_DATABASE}" - PGPASSWORD=$KOPIA_PG_PASSWORD pg_dump --host=$KOPIA_PG_HOST --username=$KOPIA_PG_USER $KOPIA_PG_DATABASE > /backup/database/$KOPIA_PG_DATABASE.sqldump || exit 1 -fi - -if [[ -v KOPIA_FTP_HOST ]]; -then - echo "Downloading from ftp server ${KOPIA_FTP_HOST}" - - lftp -u "$KOPIA_FTP_USER","$KOPIA_FTP_PASSWORD" -e "set ssl:verify-certificate no; mirror --delete --parallel=4 --use-pget-n=10 / /backup/ftp;" $KOPIA_FTP_HOST || exit 1 -fi +kopia --version kopia repository connect filesystem \ --path /repository \ --override-hostname ${KOPIA_HOSTNAME} \ --override-username ${KOPIA_USERNAME} -kopia snapshot create ${KOPIA_BACKUP_PATH} - -echo "Finished backup at $(date)" +kopia snapshot create /backup