diff options
author | Lars Wirzenius <liw@liw.fi> | 2010-07-04 17:00:58 +1200 |
---|---|---|
committer | Lars Wirzenius <liw@liw.fi> | 2010-07-04 17:00:58 +1200 |
commit | 1104da1ffd9091668ab50a808746b92e36d2b86b (patch) | |
tree | 1e0514b7ab577974f7ba62c4ca0f8b060f2131f5 | |
parent | a577264a8b46c1b8983f45bf1be56d7f74b2dd38 (diff) | |
download | obnam-1104da1ffd9091668ab50a808746b92e36d2b86b.tar.gz |
Add --chunk-size option to set size of chunks.
Previous hard-coded value is now just the default.
Some day the default should be upped for more speed.
-rwxr-xr-x | blackboxtest | 4 | ||||
-rw-r--r-- | obnamlib/__init__.py | 4 | ||||
-rw-r--r-- | obnamlib/app.py | 5 | ||||
-rw-r--r-- | obnamlib/plugins/backup_plugin.py | 5 |
4 files changed, 13 insertions, 5 deletions
diff --git a/blackboxtest b/blackboxtest index 61ab18b9..7f09bbf6 100755 --- a/blackboxtest +++ b/blackboxtest @@ -401,7 +401,9 @@ class UsesChunkGroups(BlackBoxTest): def test(self): data = self.tempdir() ngroups = 2 - nbytes = obnamlib.CHUNK_SIZE * obnamlib.CHUNK_GROUP_SIZE * ngroups + nbytes = (obnamlib.DEFAULT_CHUNK_SIZE * + obnamlib.DEFAULT_CHUNK_GROUP_SIZE * + ngroups) self.create_file(data, 'file', 'x' * nbytes) store = self.tempdir() self.backup(store, [data]) diff --git a/obnamlib/__init__.py b/obnamlib/__init__.py index b1952403..1f53237f 100644 --- a/obnamlib/__init__.py +++ b/obnamlib/__init__.py @@ -26,8 +26,8 @@ class AppException(Exception): class Error(Exception): pass -CHUNK_SIZE = 4096 -CHUNK_GROUP_SIZE = 16 +DEFAULT_CHUNK_SIZE = 4096 +DEFAULT_CHUNK_GROUP_SIZE = 16 from sizeparse import SizeSyntaxError, UnitNameError, ByteSizeParser diff --git a/obnamlib/app.py b/obnamlib/app.py index 8f7401f0..b460bee7 100644 --- a/obnamlib/app.py +++ b/obnamlib/app.py @@ -42,6 +42,11 @@ class App(object): 'do not write or remove anything, just ' 'pretend to do that') + self.config.new_bytesize(['chunk-size'], + 'size of chunks of file data backed up ' + '(default: %default)') + self.config['chunk-size'] = '%s' % obnamlib.DEFAULT_CHUNK_SIZE + self.pm = obnamlib.PluginManager() self.pm.locations = [self.plugins_dir()] self.pm.plugin_arguments = (self,) diff --git a/obnamlib/plugins/backup_plugin.py b/obnamlib/plugins/backup_plugin.py index 0f7f4cdc..4d2dbb6c 100644 --- a/obnamlib/plugins/backup_plugin.py +++ b/obnamlib/plugins/backup_plugin.py @@ -190,13 +190,14 @@ class BackupPlugin(obnamlib.ObnamPlugin): cgids = [] groupsum = self.store.new_checksummer() f = self.fs.open(filename, 'r') + chunk_size = int(self.app.config['chunk-size']) while True: - data = f.read(obnamlib.CHUNK_SIZE) + data = f.read(chunk_size) if not data: break chunkids.append(self.backup_file_chunk(data)) groupsum.update(data) - if len(chunkids) == obnamlib.CHUNK_GROUP_SIZE: + if len(chunkids) == obnamlib.DEFAULT_CHUNK_GROUP_SIZE: checksum = groupsum.hexdigest() cgid = self.store.put_chunk_group(chunkids, checksum) cgids.append(cgid) |