mirror of
https://github.com/sissbruecker/linkding
synced 2024-11-10 14:14:18 +00:00
27 lines
850 B
Python
27 lines
850 B
Python
|
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}'))
|