1
0
Fork 0
mirror of https://github.com/borgbackup/borg.git synced 2025-02-23 06:31:58 +00:00

Reduce memory usage when backing up many small files

Closes #69.
This commit is contained in:
Jonas Borgström 2014-05-03 13:34:40 +02:00
parent a87a019608
commit 055a40910b
2 changed files with 11 additions and 6 deletions

View file

@ -8,6 +8,7 @@ Version 0.13
(feature release, released on X)
- Reduced memory usage when backing up many small files (#69)
- Experimental Linux and FreeBSD ACL support (#66)
- Added support for backup and restore of BSDFlags (OSX, FreeBSD) (#56)
- Fix bug where xattrs on symlinks were not correctly restored

View file

@ -12,6 +12,8 @@
class Cache(object):
"""Client Side cache
"""
# Do not cache file metadata for files smaller than this
FILE_MIN_SIZE = 4096
class RepositoryReplay(Error):
"""Cache is newer than repository, refusing to continue"""
@ -81,9 +83,10 @@ def _read_files(self):
if not data:
break
u.feed(data)
for hash, item in u:
for path_hash, item in u:
if item[2] > self.FILE_MIN_SIZE:
item[0] += 1
self.files[hash] = item
self.files[path_hash] = item
def begin_txn(self):
# Initialize transaction snapshot
@ -218,7 +221,8 @@ def file_known_and_unchanged(self, path_hash, st):
return None
def memorize_file(self, path_hash, st, ids):
# Entry: Age, inode, size, mtime, chunk ids
mtime_ns = st_mtime_ns(st)
self.files[path_hash] = 0, st.st_ino, st.st_size, mtime_ns, ids
self._newest_mtime = max(self._newest_mtime, mtime_ns)
if st.st_size > self.FILE_MIN_SIZE:
# Entry: Age, inode, size, mtime, chunk ids
mtime_ns = st_mtime_ns(st)
self.files[path_hash] = 0, st.st_ino, st.st_size, mtime_ns, ids
self._newest_mtime = max(self._newest_mtime, mtime_ns)