Commit graph

51 commits

Author SHA1 Message Date
Frederik Ring 1db896f7cf Tweak README, improve client naming, tidy go.mod file 2022-01-22 13:35:13 +01:00
Kaerbr 6ded00aa06
Support Nextcloud / WebDav (#48)
* add studio-b12/gowebdav to be able to upload to webdav server

* make sure all env variables are present for webdav upload

* implement file upload to WebDav server

directory defaults to the base directory

* docs: add the new feature to the documentation

* if no WebDav env variable are given throw no error

* docs: use more elegant english :D

Co-authored-by: Frederik Ring <frederik.ring@gmail.com>

* docs: use official spelling of "WebDAV"

* perf: golang likes to return early instead of having an else block

* use WEBDAV_PATH instead of WEBDAV_DIRECTORY

* use split_words for more convenience

like shown here: https://github.com/kelseyhightower/envconfig#struct-tag-support

* simplify

* feat: add pruning of files in WebDAV remote

Based on / Inspired by the minio/S3 implementation of pruning remote files.

* remove logging from the development

* test: first try implementing tests

Sandly I have to use the remote pipeline -- local wont work for me.

* test: adapt used volume names

* test: specify image only once!

* test: minio AND webdav data should be present

* test: backups on WebDAV remote are laying in the root directory

* test: the webdav server stores date in /var/lib/dav

* trying with data subfolder

* test: 1 container was added so the number raised from 3 to 4

* webdav  subfolder is "data" not "backup"

* fix: password AND username must be defined

not password OR username

* improve logging

* feat: if the given path on the server isnt preset it will be created

* test: add creation of new folder for webdav to tests

Co-authored-by: Frederik Ring <frederik.ring@gmail.com>
2022-01-22 13:29:21 +01:00
Frederik Ring 32575c831e Also expand env vars in pruning prefix if configured 2021-12-23 09:22:56 +01:00
Frederik Ring c062710ce8
Allow for env substitution in backup filename (#39) 2021-12-22 14:39:46 +01:00
Frederik Ring 4207146fb6 Refactor calling of hooks on exit 2021-12-18 10:31:12 +01:00
Frederik Ring 1f727f698f Run hooks in order of severity 2021-12-18 10:31:12 +01:00
Frederik Ring 88c90a206c Use int comparison for checking hooks 2021-12-18 10:31:12 +01:00
Frederik Ring 8bad0656b3 Enable notifications on multiple levels 2021-12-18 10:31:12 +01:00
Frederik Ring 08d78a0bd6 allow sending notifications to multiple channels 2021-12-18 10:31:12 +01:00
Frederik Ring 5a6ce81b58 update github.com/otai/copy, use PreserveOwner option 2021-11-29 08:40:55 +01:00
Frederik Ring 7bc5b2ccef fix minor error scoping mistakes 2021-11-28 20:06:24 +01:00
Frederik Ring 210c7d4540
Reuse hook mechanism for scheduling clean up tasks (#33)
* reuse hook mechanism for scheduling clean up tasks

* register hooks before creating files or dirs

* fix logging order

* use typed hook levels
2021-11-08 19:10:10 +01:00
schwannden 411c39ee72
create a snapshot before creating tar archive (#32)
* create a snapshot before creating tar archive

* safeguard snapshot removal and make snapshot optional

* fix typo, make sure remove snapshot failure triggers failure hook

Co-authored-by: Schwannden Kuo <schwannden@mobagel.com>
2021-11-08 08:39:18 +01:00
Frederik Ring 0c666d0c88 use lstat when checking whether file is a symlink 2021-11-03 18:07:55 +01:00
Frederik Ring a0402b407d fix fileinfo mode comparison when checking for symlinks 2021-11-03 18:03:44 +01:00
Frederik Ring 3193e88fc0 os.FileInfo cannot be used for deleting files as it does not contain a full path 2021-11-02 06:40:37 +01:00
Frederik Ring f946f36fb0 exclude symlinks from candidates when pruning local files
Previously, symlinks would be included in the set of candidates, but would
be skipped when pruning. This could lead to a wrong number of candidates
being printed in the log messages.
2021-10-29 09:00:37 +02:00
Frederik Ring 5245b5882f update README, save some indentation 2021-10-28 19:55:39 +02:00
schwannden 7f0f173115
adding option to skip tls verification error (#30)
* adding option to skip tls verification error

* merge options

* removed merged option from README

Co-authored-by: Schwannden Kuo <schwannden@mobagel.com>
2021-10-28 19:51:35 +02:00
Frederik Ring c59b40f2df automatically create symlink to latest local backup if configured 2021-10-01 18:19:24 +02:00
Frederik Ring bd73a2b5e4 allow s3 authentication via IAM role 2021-09-30 19:24:43 +02:00
Frederik Ring 53c257065e ensure script always tries to remove local artifacts even when backup failed 2021-09-12 10:48:19 +02:00
Frederik Ring 160a47e90b allow registering hooks at different levels 2021-09-09 16:55:49 +02:00
Frederik Ring 59660ec5c7 include exit log message in notification 2021-09-09 11:08:05 +02:00
Frederik Ring 88368197c1 implement email notifications on failed backup runs 2021-09-09 09:00:23 +02:00
Frederik Ring e46968ed79 call error hooks on script failure 2021-09-09 08:12:07 +02:00
Frederik Ring 2c06f81503 collect all log output in buffer so it could be used in notifications 2021-09-09 07:24:18 +02:00
Frederik Ring 8aba98c012 use forked version of package targz 2021-09-04 10:08:06 +02:00
Frederik Ring ede94bcd88 display all error messages instead of first one 2021-08-29 19:39:51 +02:00
Frederik Ring aae97a5617 try restarting even when stopping some containers failed 2021-08-29 18:51:05 +02:00
Frederik Ring 825cbb50ef always use background context directly 2021-08-29 18:26:40 +02:00
Frederik Ring bea203af3d improve documentation 2021-08-29 18:16:04 +02:00
Frederik Ring 6034e6a902 print proper local archive in log message 2021-08-29 08:36:45 +02:00
Frederik Ring d0eca0a179 fix container stop execution order 2021-08-26 16:22:24 +02:00
Frederik Ring a0fe2cf42d handle errors on container restart 2021-08-26 12:50:22 +02:00
Frederik Ring 5334ff1a5a refactor script initialization 2021-08-25 07:48:20 +02:00
Frederik Ring e73256ad70 do not use start time as deadline 2021-08-24 09:15:43 +02:00
Frederik Ring e0c4adc563 move handling of config to script layer 2021-08-24 09:01:44 +02:00
Frederik Ring 2469597848 fix lockfile mechanism 2021-08-23 18:46:49 +02:00
Frederik Ring b1c4bee85d use buffered reader to write to encryption mechanism 2021-08-23 17:34:13 +02:00
Frederik Ring ec87bd27e7 do not use scanner to write file in chunks 2021-08-23 15:19:50 +02:00
Frederik Ring f4f4fa9e74 use full filepath when pruning local backups 2021-08-23 14:56:04 +02:00
Frederik Ring 7086c6e645 read backup in small chunks when encrypting 2021-08-23 14:48:33 +02:00
Frederik Ring 411a62a6c7 shorten log messages 2021-08-23 14:48:33 +02:00
Frederik Ring 5a2bf48ec6 make sure backup also runs when socket isn't present 2021-08-23 14:48:33 +02:00
Frederik Ring 07b06cf0ba read all configuration in init 2021-08-23 14:48:33 +02:00
Frederik Ring 4c80494433 use go native strftime version 2021-08-23 14:48:33 +02:00
Frederik Ring 7244725c5b fix location of success message for having created local backup 2021-08-23 14:48:33 +02:00
Frederik Ring d195e8967f improve logging messages 2021-08-23 14:48:33 +02:00
Frederik Ring 188c14c00f add insecure option, update docs 2021-08-23 14:48:33 +02:00