Ratarmount Versions Save

Access large archives as a filesystem efficiently, e.g., TAR, RAR, ZIP, GZ, BZ2, XZ, ZSTD archives

v0.15.0

1 month ago

ratarmount

Added

  • Print indicators for versions of loaded shared libraries.

ratarmountcore

Added

  • Add libarchive backend and detection support for: grzip, lrzip, lz4, lzip, lzma, lzop, rpm, uuencode, compress, 7zip, ar, cab, deb, xar, cpio, iso, war, cxar.
  • Add --transform option to map each archive entry path via a regex to some user-specified one.
  • Add zlib support (RFC1950).
  • Store backend name into the index and check that the index fits to the current backend / MountSource.
  • Store isGnuIncremental flag in the index.
  • Apply specified priorities for opening all archives not just gzip.

Performance

  • Determine incremental archives from index rows to avoid seeks.
  • Remove indexed_bzip2 dependency in favor of rapidgzip, which in the future should support even more formats.

Fixes

  • utils.findModuleVersion: Return version not name if __version__ does not exist.

rapidgzip

Added

  • The rapidgzip Python library now also bundles IndexedBzip2File from indexed_bzip2.
  • Enable checksum verification by default.
  • Support for decompression from non-seekable inputs such as stdin.

Performance

  • Windows / seek points are compressed in memory for reduced memory usage.
  • Avoid doubling memory usage during index import and export by streaming the data directly to the output file.

v0.14.2

1 month ago

ratarmount

Fixes

  • Do not check mount point because of faulty os.path.ismount, simply try fusermount.
  • Avoid total I/O hang when lazy-mounting a folder with archives onto itself.

ratarmountcore

Fixes

  • Return a valid file info and file version count for /.
  • Make the original archive viewable as an older file version when using AutoMountLayer.
  • Resolve symbolic links pointing outside the source folder given to FolderMountSource to not break them.
  • Do not return a valid FileInfo for invalid paths such as ../...
  • Make --index-minimum-file-count work for the TAR backend.
  • The index should not be created for very small archives.
  • Root file info userdata was not initialized correctly.
  • Index validation did fail for TAR entries with more than 2 metadata blocks.
  • Do not check for folder consistency because parent folders get automatically added to the index.
  • Move _createFileInfo out of MountSource class to fix "protected-access" warning.
  • Joined files (a.001, a.002) did not work because of an accidentally shared list.
  • Do not check file header for zip, only for the footer, to detect self-extracting archives.

v0.14.1

2 months ago

ratarmount

Fixes

  • Fix AttributeError: module 'fuse' has no attribute 'errno'.
  • Fix --commit-overlay, which did not add newly created empty folders to TARs.
  • Do not ask for confirmation if there is nothing to commit when using --commit-overlay.
  • Improve unmounting with ratarmount -u, especially with the AppImage.

ratarmountcore

Fixes

  • Properly close opened file objects in mount sources.
  • Fix --disable-union-mount, which returned an I/O error.
  • Fix that --use-backend=indexed_gzip still did use rapidgzip. It only worked when both were specified.
  • Fix detection of self-extracting RAR files.
  • Improve the error message when a file cannot be read because of a missing dependency.
  • Improve debug message when the index does not yet contain a gzip index.
  • Fix faulty seek forward for files opened via RarMountSource when whence is not io.SEEK_SET.

Performance

  • Skip data offset collection for zip files because it takes too long and is unused.

v0.9.3

2 months ago
  • Fix mounting of TAR fails if there are special characters like '#' in the path.
  • Fix recursive mounting of simple compressed files (file.bz2) inside TAR.
  • Fix file objects being returned by SQLiteIndexedTar not being independent of each other. because of the shared underlying file object.

v0.9.2

2 months ago
  • Fix StenciledFile accidentally throwing an exception when accessing empty files.
  • Improve performance when using union mounting by using a folder-to-archive lookup cache.
  • Implicitly added parent folders will now show a size of 0B instead of arbitrary 1B.
  • Fix version ordering for implicitly added folders.
  • Fix permissions to not remove write permissions. FUSE will still return a "Read-only file system" error when trying to modify the file system.
  • Fix RAR files were not found when ratarmount was daemonized and changed the current working directory.

v0.9.1

2 months ago
  • Fix recursive mounting failing for archives in top-level directory.
  • Replace the optional lzmaffi dependency with a python-xz dependency.
  • Fix missing files in ZIP and RAR if parent folders are not in the archive.
  • Fix archives getting misrecognized as ZIP because of lenient zipfile.is_zipfile function.
  • Make indexed_zstd an optional dependency on macOS because wheels are missing.
  • Fix CRC errors thrown by rarfile when reading after seeking back file objects for files inside RARs.
  • Fix ratarmount not working if rarfile or zipfile were not installed.
  • Disable ZIP support with Python 3.6 and older because the returned file object is not seekable.

v0.9.0

2 months ago
  • Refactor the code and introduce a MountSource interface.
  • Add support for zip and rar archives including password-encrypted ones.
  • Improve recursive mounting. If supported by the decompression backend, compressed archives inside compressed archives can be mounted recursively.
  • Fixes for macOS and Windows.

v0.8.1

2 months ago
  • Fix BLOB longer than INT_MAX bytes error for .gz archives larger than ~400GB.
  • Add missing dataclasses dependency for Python 3.6.
  • Open SQLite index read-only to allow multiple ratarmount instances to use it.
  • Raise an exception if SQLiteIndexedTar cannot read the given file object.
  • Warn on newer index versions.
  • Add support for --index-name :memory: to create in-memory indexes.

v0.8.0

2 months ago
  • Fix SQLiteIndexedTar class when being called with a file object.
  • Add -P argument option to activate the parallel BZ2 decoder of indexed_bzip2 1.2.0.
  • Add --lazy option, which works in tandem with --recursive, and bind mounted folders. TARs inside the source folder will be mounted only after the first access to it through the mount point.
  • TARs containing hard links to files with exactly the same name will be interpreted as referring to a prior version of that file.

v0.7.0

2 months ago
  • Add CLI options --index-file and --index-folder to specify an index location or folder.
  • Add support for zstd compressed TARs.
  • Add support for xz compressed TARs when compressed with pixz or pxz or similar tools limiting the block size.
  • Fix index location check not accounting for SQLite special requirements.
  • Add warnings for when the existing index was created with different arguments, e.g., without --recursive, even though --recursive was requested.
  • Add specialized exceptions used by ratarmount.
  • Add recursive mounting for folders in order to mount all contained TARs.