Skip to content

v0.9.0 - Payload Mode: a 131 GiB Tree Through Seafile Without Going Through Git, and the Snapshot Tool Installs with the Package

Choose a tag to compare

@github-actions github-actions released this 14 Oct 06:42
· 49 commits to main since this release

What's Changed in v0.9.0

The snapshot tool (git seafile-snapshot) can now carry a tree that is mostly large,
immutable data. Files above a threshold, or that do not compress, bypass git: each is
hashed and stored on the server under its SHA-256, and the snapshot is a manifest.
A 131 GiB tree (633 payload files, 124.6 GB) was snapshotted in 38 minutes against a
real Seafile server and restored byte-exact, verified file by file.

Upgrading from 0.8.8

  • The snapshot tool ships in the wheel: git-seafile-snapshot (so git seafile-snapshot)
    and git-remote-seafile snapshot. python tools/seafile_snapshot.py still works from a checkout.
  • Payload mode is on by default (auto: files of 64 MiB or more, or 4 MiB or more that do not compress) for snapshots that push to a seafile:// remote. A tree with no such file is snapshotted exactly as in 0.8.8. --no-payload turns it off and the vault remembers that.
  • An existing vault with large files in git changes on its next run: they leave the git tree and are uploaded as payload objects (one full pass; stored twice on the server, since the old blobs stay in the history). Older snapshots restore as before; newer ones need the payload, and 0.8.8 cannot restore them completely. Run once with --no-payload to keep a vault as it was.

Added

  • Payload mode (--payload-min-size [SIZE|auto]): large files stored by hash under
    <path>/payload/objects/, a manifest in the vault commit, parallel uploads, a
    per-machine hash cache, and a verified --restore. The setting is remembered by the vault.
  • --payload-gc (two-phase retention, --payload-keep N for expiry), --payload-verify
    (audit by download and hash), --payload-view (a browsable directory of real names
    by server-side copy), --payload-rehash.
  • --no-payload, a .seafile-payload/README.txt in every payload vault, and a size line for the
    payload store after an upload.
  • Safeguards (PAYLOAD.md D13): each snapshot commit records the tool's version and a run warns when it
    builds on a newer tool's snapshot; --payload-delete needs --vault (or --payload-no-vault) and stops
    with --payload-accept-loss when the remote's history was rewritten or --payload-keep would expire
    snapshots (a tag is a pin); a restore that would not fit the disk is refused before downloading; an
    upload over the quota or into a library this machine syncs is warned about first; --payload-verify
    leaves a marker that the gc report shows.
  • The specification, with two rounds of independent review, is PAYLOAD.md.

Changed

  • SeafileClient.delete_entry forgets the directories under a deleted path.
  • --help groups the payload options and states each default.

Fixed

  • --restore --ref <rev> failed against any remote whose HEAD is the vault branch.

The full list, with measurements, is in CHANGELOG.md.


Full Changelog: v0.8.8...v0.9.0