linkding/bookmarks/management/commands/backup.py

27 lines
850 B
Python
Raw Normal View History

2023-11-05 18:27:48 +00:00
import sqlite3
import os
from django.core.management.base import BaseCommand
class Command(BaseCommand):
help = "Creates a backup of the linkding database"
def add_arguments(self, parser):
parser.add_argument('destination', type=str, help='Backup file destination')
def handle(self, *args, **options):
destination = options['destination']
def progress(status, remaining, total):
self.stdout.write(f'Copied {total-remaining} of {total} pages...')
source_db = sqlite3.connect(os.path.join('data', 'db.sqlite3'))
backup_db = sqlite3.connect(destination)
with backup_db:
source_db.backup(backup_db, pages=50, progress=progress)
backup_db.close()
source_db.close()
self.stdout.write(self.style.SUCCESS(f'Backup created at {destination}'))