mirror of https://github.com/borgbackup/borg.git
Merge pull request #634 from ThomasWaldmann/create-starttime-duration
Create starttime duration
This commit is contained in:
commit
39c3906238
|
@ -128,7 +128,7 @@ class Archive:
|
||||||
def __init__(self, repository, key, manifest, name, cache=None, create=False,
|
def __init__(self, repository, key, manifest, name, cache=None, create=False,
|
||||||
checkpoint_interval=300, numeric_owner=False, progress=False,
|
checkpoint_interval=300, numeric_owner=False, progress=False,
|
||||||
chunker_params=CHUNKER_PARAMS,
|
chunker_params=CHUNKER_PARAMS,
|
||||||
start=datetime.now(), end=datetime.now()):
|
start=datetime.utcnow(), end=datetime.utcnow()):
|
||||||
self.cwd = os.getcwd()
|
self.cwd = os.getcwd()
|
||||||
self.key = key
|
self.key = key
|
||||||
self.repository = repository
|
self.repository = repository
|
||||||
|
@ -172,15 +172,20 @@ class Archive:
|
||||||
def load(self, id):
|
def load(self, id):
|
||||||
self.id = id
|
self.id = id
|
||||||
self.metadata = self._load_meta(self.id)
|
self.metadata = self._load_meta(self.id)
|
||||||
decode_dict(self.metadata, (b'name', b'hostname', b'username', b'time'))
|
decode_dict(self.metadata, (b'name', b'hostname', b'username', b'time', b'time_end'))
|
||||||
self.metadata[b'cmdline'] = [arg.decode('utf-8', 'surrogateescape') for arg in self.metadata[b'cmdline']]
|
self.metadata[b'cmdline'] = [arg.decode('utf-8', 'surrogateescape') for arg in self.metadata[b'cmdline']]
|
||||||
self.name = self.metadata[b'name']
|
self.name = self.metadata[b'name']
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def ts(self):
|
def ts(self):
|
||||||
"""Timestamp of archive creation in UTC"""
|
"""Timestamp of archive creation (start) in UTC"""
|
||||||
return parse_timestamp(self.metadata[b'time'])
|
return parse_timestamp(self.metadata[b'time'])
|
||||||
|
|
||||||
|
@property
|
||||||
|
def ts_end(self):
|
||||||
|
"""Timestamp of archive creation (end) in UTC"""
|
||||||
|
return parse_timestamp(self.metadata[b'time_end'])
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def fpr(self):
|
def fpr(self):
|
||||||
return hexlify(self.id).decode('ascii')
|
return hexlify(self.id).decode('ascii')
|
||||||
|
@ -226,7 +231,11 @@ Number of files: {0.stats.nfiles}'''.format(self)
|
||||||
raise self.AlreadyExists(name)
|
raise self.AlreadyExists(name)
|
||||||
self.items_buffer.flush(flush=True)
|
self.items_buffer.flush(flush=True)
|
||||||
if timestamp is None:
|
if timestamp is None:
|
||||||
timestamp = datetime.utcnow()
|
start = self.start
|
||||||
|
end = self.end
|
||||||
|
else:
|
||||||
|
start = timestamp
|
||||||
|
end = timestamp # we only have 1 value
|
||||||
metadata = StableDict({
|
metadata = StableDict({
|
||||||
'version': 1,
|
'version': 1,
|
||||||
'name': name,
|
'name': name,
|
||||||
|
@ -234,7 +243,8 @@ Number of files: {0.stats.nfiles}'''.format(self)
|
||||||
'cmdline': sys.argv,
|
'cmdline': sys.argv,
|
||||||
'hostname': socket.gethostname(),
|
'hostname': socket.gethostname(),
|
||||||
'username': getuser(),
|
'username': getuser(),
|
||||||
'time': timestamp.isoformat(),
|
'time': start.isoformat(),
|
||||||
|
'time_end': end.isoformat(),
|
||||||
})
|
})
|
||||||
data = msgpack.packb(metadata, unicode_errors='surrogateescape')
|
data = msgpack.packb(metadata, unicode_errors='surrogateescape')
|
||||||
self.id = self.key.id_hash(data)
|
self.id = self.key.id_hash(data)
|
||||||
|
@ -851,7 +861,7 @@ class ArchiveChecker:
|
||||||
archive = StableDict(msgpack.unpackb(data))
|
archive = StableDict(msgpack.unpackb(data))
|
||||||
if archive[b'version'] != 1:
|
if archive[b'version'] != 1:
|
||||||
raise Exception('Unknown archive metadata version')
|
raise Exception('Unknown archive metadata version')
|
||||||
decode_dict(archive, (b'name', b'hostname', b'username', b'time'))
|
decode_dict(archive, (b'name', b'hostname', b'username', b'time', b'time_end'))
|
||||||
archive[b'cmdline'] = [arg.decode('utf-8', 'surrogateescape') for arg in archive[b'cmdline']]
|
archive[b'cmdline'] = [arg.decode('utf-8', 'surrogateescape') for arg in archive[b'cmdline']]
|
||||||
items_buffer = ChunkBuffer(self.key)
|
items_buffer = ChunkBuffer(self.key)
|
||||||
items_buffer.write_chunk = add_callback
|
items_buffer.write_chunk = add_callback
|
||||||
|
|
|
@ -191,7 +191,7 @@ class Archiver:
|
||||||
if args.progress:
|
if args.progress:
|
||||||
archive.stats.show_progress(final=True)
|
archive.stats.show_progress(final=True)
|
||||||
if args.stats:
|
if args.stats:
|
||||||
archive.end = datetime.now()
|
archive.end = datetime.utcnow()
|
||||||
log_multi(DASHES,
|
log_multi(DASHES,
|
||||||
str(archive),
|
str(archive),
|
||||||
DASHES,
|
DASHES,
|
||||||
|
@ -202,7 +202,7 @@ class Archiver:
|
||||||
self.output_filter = args.output_filter
|
self.output_filter = args.output_filter
|
||||||
self.output_list = args.output_list
|
self.output_list = args.output_list
|
||||||
dry_run = args.dry_run
|
dry_run = args.dry_run
|
||||||
t0 = datetime.now()
|
t0 = datetime.utcnow()
|
||||||
if not dry_run:
|
if not dry_run:
|
||||||
repository = self.open_repository(args, exclusive=True)
|
repository = self.open_repository(args, exclusive=True)
|
||||||
manifest, key = Manifest.load(repository)
|
manifest, key = Manifest.load(repository)
|
||||||
|
@ -489,7 +489,8 @@ class Archiver:
|
||||||
print('Fingerprint: %s' % hexlify(archive.id).decode('ascii'))
|
print('Fingerprint: %s' % hexlify(archive.id).decode('ascii'))
|
||||||
print('Hostname:', archive.metadata[b'hostname'])
|
print('Hostname:', archive.metadata[b'hostname'])
|
||||||
print('Username:', archive.metadata[b'username'])
|
print('Username:', archive.metadata[b'username'])
|
||||||
print('Time: %s' % format_time(to_localtime(archive.ts)))
|
print('Time (start): %s' % format_time(to_localtime(archive.ts)))
|
||||||
|
print('Time (end): %s' % format_time(to_localtime(archive.ts_end)))
|
||||||
print('Command line:', remove_surrogates(' '.join(archive.metadata[b'cmdline'])))
|
print('Command line:', remove_surrogates(' '.join(archive.metadata[b'cmdline'])))
|
||||||
print('Number of files: %d' % stats.nfiles)
|
print('Number of files: %d' % stats.nfiles)
|
||||||
print()
|
print()
|
||||||
|
|
Loading…
Reference in New Issue