···24242525### Todo
26262727-- [ ] - Turn this into a long running app using a cron library perhaps
2727+- [x] - Turn this into a long running app using a cron library perhaps
2828+- [ ] - Work out how to tar just the directory requested, not the full path (ie `/home/will/tangled/repo` should back up `/repo` only and not create the full path of empty directories)
2829- [ ] - User query params properly when creating the URLs to fetch repo and blobs
2930- [ ] - Allow configuring the backup of knot repo data per users DID maybe?
+11-9
tangled_knot.go
···1313 "github.com/minio/minio-go/v7"
1414)
15151616-func backupTangledKnot(ctx context.Context, minioClient *minio.Client, bucketName string) {
1717- backupKnotDB(ctx, minioClient, bucketName)
1818- backupKnotRepos(ctx, minioClient, bucketName)
1616+func (s *service) backupTangledKnot(ctx context.Context) {
1717+ s.backupKnotDB(ctx)
1818+ s.backupKnotRepos(ctx)
1919+2020+ slog.Info("finished tangled knot backup")
1921}
20222121-func backupKnotDB(ctx context.Context, minioClient *minio.Client, bucketName string) {
2323+func (s *service) backupKnotDB(ctx context.Context) {
2224 dir := os.Getenv("TANGLED_KNOT_DATABASE_DIRECTORY")
2325 if dir == "" {
2426 slog.Info("TANGLED_KNOT_DATABASE_DIRECTORY env not set - skipping knot DB backup")
···29313032 go compress(dir, pipeWriter)
31333232- _, err := minioClient.PutObject(ctx, bucketName, "knot-db.zip", pipeReader, -1, minio.PutObjectOptions{})
3434+ _, err := s.minioClient.PutObject(ctx, s.bucketName, "knot-db.zip", pipeReader, -1, minio.PutObjectOptions{})
3335 if err != nil {
3434- slog.Error("stream knot DB to bucket: %w")
3636+ slog.Error("stream knot DB to bucket", "error", err)
3537 bugsnag.Notify(err)
3638 }
3739}
38403939-func backupKnotRepos(ctx context.Context, minioClient *minio.Client, bucketName string) {
4141+func (s *service) backupKnotRepos(ctx context.Context) {
4042 dir := os.Getenv("TANGLED_KNOT_REPOSITORY_DIRECTORY")
4143 if dir == "" {
4244 slog.Info("TANGLED_KNOT_REPOSITORY_DIRECTORY env not set - skipping knot repo backup")
···47494850 go compress(dir, pipeWriter)
49515050- _, err := minioClient.PutObject(ctx, bucketName, "knot-repos.zip", pipeReader, -1, minio.PutObjectOptions{})
5252+ _, err := s.minioClient.PutObject(ctx, s.bucketName, "knot-repos.zip", pipeReader, -1, minio.PutObjectOptions{})
5153 if err != nil {
5252- slog.Error("stream knot repos to bucket: %w")
5454+ slog.Error("stream knot repos to bucket", "error", err)
5355 bugsnag.Notify(err)
5456 }
5557}