add basic support for leveldb
This commit is contained in:
@@ -1,10 +1,18 @@
|
||||
from game_backuper.db import Db
|
||||
from game_backuper.config import Config, Program
|
||||
from game_backuper.config import (
|
||||
Config,
|
||||
Program,
|
||||
ConfigNormalFile,
|
||||
ConfigLeveldb,
|
||||
)
|
||||
from game_backuper.cml import Opts
|
||||
from threading import Thread
|
||||
from os.path import exists, join
|
||||
from os import mkdir
|
||||
from game_backuper.file import new_file, copy_file
|
||||
from game_backuper.leveldb import have_leveldb
|
||||
if have_leveldb:
|
||||
from game_backuper.leveldb import list_leveldb_entries
|
||||
|
||||
|
||||
class BackupTask(Thread):
|
||||
@@ -21,21 +29,26 @@ class BackupTask(Thread):
|
||||
if not exists(bp):
|
||||
mkdir(bp)
|
||||
for f in self.prog.files:
|
||||
if exists(f[1]):
|
||||
ori = self.db.get_file(prog, f[0])
|
||||
nf = new_file(f[1], f[0], prog)
|
||||
if nf is None:
|
||||
continue
|
||||
de = join(bp, f[0])
|
||||
if ori is not None:
|
||||
if ori.size == nf.size and ori.hash == nf.hash:
|
||||
print(f'{prog}: Skip {f[0]}({f[1]}).')
|
||||
if isinstance(f, ConfigNormalFile):
|
||||
if exists(f[1]):
|
||||
ori = self.db.get_file(prog, f[0])
|
||||
nf = new_file(f[1], f[0], prog)
|
||||
if nf is None:
|
||||
continue
|
||||
copy_file(f[1], de, f[0], prog)
|
||||
self.db.set_file(ori.id, nf.size, nf.hash)
|
||||
else:
|
||||
copy_file(f[1], de, f[0], prog)
|
||||
self.db.add_file(nf)
|
||||
de = join(bp, f[0])
|
||||
if ori is not None:
|
||||
if ori.size == nf.size and ori.hash == nf.hash:
|
||||
print(f'{prog}: Skip {f[0]}({f[1]}).')
|
||||
continue
|
||||
copy_file(f[1], de, f[0], prog)
|
||||
self.db.set_file(ori.id, nf.size, nf.hash)
|
||||
else:
|
||||
copy_file(f[1], de, f[0], prog)
|
||||
self.db.add_file(nf)
|
||||
elif isinstance(f, ConfigLeveldb):
|
||||
if not have_leveldb:
|
||||
raise ValueError('Leveldb is not supported.')
|
||||
print(list_leveldb_entries(f.full_path, f.domains))
|
||||
|
||||
|
||||
class Backuper:
|
||||
|
||||
Reference in New Issue
Block a user