Tapestry was a specialized backup automation utility, written in Python 3.6 for use on unix and Windows systems. It is currently tested on Windows 10, Ubuntu 18.04 and Max OS X. Tapestry operates in a somewhat novel way, performing backups of whole files, operating from recursively-generated lists taken from the contents of user-specified files, packaging them using our Blockwise Packaging Algorithm before compressing, encrypting, and signing them for storage - a model which allows the user to eliminate trust in the security of the storage solution completely, with complete portability.

Zero Trust

Reduce your threat surface by eliminating the need for unnecessary trust in your storage solution. Tapestry’s assymetric encryption method means that only your trusted administrators can view or restore from a Tapestry backup, while providing strong verification of backup integrity through digital signatures. If your storage is readable, your backups are secure.

Portability

Category path definitions are user-defined, and non-platform specific. Backups created on any platform can be restored on any other platform - with their original file heirarchy intact - exactly where you want them to be.

Resilliency

Tapestry stores the full index information for each backup in every single block of the backup. If you find yourself with only fragments of your backup, the pieces you do have are fully recoverable. Further, the NewRIFF metadata format is designed with extensibility in mind - future releases of Tapestry will be fully reverse compatible, always.

Tapestry was a specialized backup automation utility, written in Python 3.6 for use on unix and Windows systems. It is currently tested on Windows 10, Ubuntu 18.04 and Max OS X. Tapestry operates in a somewhat novel way, performing backups of whole files, operating from recursively-generated lists taken from the contents of user-specified files, packaging them using our Blockwise Packaging Algorithm before compressing, encrypting, and signing them for storage - a model which allows the user to eliminate trust in the security of the storage solution completely, with complete portability.

As of January 2024, Tapestry is now archived software. It is no longer being actively maintained beyond critical security fixes. Better alternatives are likely available, but if you are a tapestry user we’d love to hear from you. Please contact this address if you have a pressing need for this software, and we’ll see about trying to restore it.

Tapestry is currently in its v 2.2.0 release. This release included a variety of cross-platform bug fixes and performance enhancements, along with the critical feature to verify that files were unaltered during the backup creation process. See the changelog for details.

Already sold, and just want to try it out? Flip open your shell of choice and call pip install tapestry.

Trust Only Uptime

Tapestry was designed from the ground up to eliminate the need for trust wherever possible. For sensitive business and personal information, simply trusting your storage provider not to view or tamper with your content is just not an option. For that reason, we’ve implemented a number of features to place proven security technologies in the hands of our users. Asymmetric Encryption via PGP

Tapestry uses Gnu Privacy Guard (GPG), a free, open-source implementation of the OpenPGP protocol, to encrypt each and every file it produces with aymmetric encryption. The practical upshot? The public half of the recovery key could be distrubted organization-wide to generate backups, while only a few trusted admins might have access to the private half. There’s no tedious per-file key management or reliance on low-strength passwords. One recovery key, one disaster avoided.

Proof-of-Integrity with RSA Signatures

Tapestry supports automatic signing of its generated output files using a per-user-configurable signing key. With proper key management, this means you can have high confidence that the file you retrieve from your storage solution is the same file you put there when you generated the backup - not a bit out of place. Combined with the right PKI, this makes managing the trust level necessary to validate backups a snap.

Zero Data Tracking

Apart from the data which is generated and stored in each backup, Tapestry collects exactly no data about the users running it or the systems it’s being run on, and has no telemetry capabilities. We don’t even see the passphrase protecting your keys - by design, we leave collecting the passphrase up to your GPG install’s configuration by letting it trigger the Pin Entry binary you specified.

In short: you don’t even have to trust us.

Complete Freedom Of Movement

From the beginning, Tapestry was always meant to be completely platform independant. As long as you have a python interpreter and GnuPG installed, you’ll have access to the full host of features Tapestry provides.

Have Pip, Will Travel

Even recovering from a brand new OS install is easier now with the release of Tapestry via the Python Package index. An up-to-date version of Tapestry is just a pip install tapestry away. On Linux, this means you can recover in minutes. On Windows, you’ll have to install Tapestry’s dependancies python and Gnupg4win first.

Categorical Indexing: What you want, where you want it

Tapestry’s tapestry.cfg configuration file allows you to define the top-level path to each of your categories for both windows and linux simultaneously, while the NewRIFF recovery metadata introduced in Tapestry 2.0.0 contains the lower portion of the path for each and every file. Your documents in linux can be placed right alongside your documents from Windows, if necessary!

Lost your config file, or can’t remember your categories? Not a problem. If Tapestry can’t find the right category in your configuraiton file, it will just create a directory at your specified output path and rebuild the original file structure for that category there.

One-line Automation

Attack the problem of forgetfulness head on - triggering tapestry every third thursday at 2 AM is a single line in crontab away.

Robust Resilliency

A backup solution isn’t very good if corruption in one file means the whole backup is lost. Every precaution has been taken to prevent such an outcome. Minimum Intervention Approach

To better protect the integrity of your data, Tapestry doesn’t mess around performing delta-based backup processes like change-logging or version control. Every Tapestry backup contains every file in every directory you told it to look at, in full and unaltered. No complex change management or tracking required.

First, Tapestry crawls the directories and sub-directories of the categories you’d indicated, preparing the indexing information it requires. Then, it performs a “moving truck” algorithm to prepare the minimum number of output blocks, each no larger than a filesize you specified. Burning to CDs or DVDs? No problem. Throwing packets over the wire to a legacy FTP or NFS share? No problem. Don’t vare about the output file size? Still no problem.

Redundant Indexing

Every single output file produced by tapestry contains the full recovery index. What’s this mean for you? That means if you only have part of the backup for some reason, you can still recover the part you had.

This project and its output are provided free of upfront charge as part of the philosophy of FOSS and OSHW development practices. If you like this project and want to support its ongoing development, please check our support page.

LabNotes for This Project

End of an Era: Archiving Tapestry

04 Jan 2024

Tapestry is the oldest code project of mine that can be said to fall under the Arcana Labs umbrella - in fact, it’s so old that the project itself has persisted through two full rebrands and renamings of the lab - Kensho Security Labs, and Patch Savage Labs before that. While I’m sure I’m now its only continuous user, the fact remains it is, at least for me, a profoundly useful backup utility… when it works… and sadly, it no longer works.

Nailing Down a Years-Old Problem in Tapestry

20 Dec 2023

Tapestry is the oldest code project of mine that can be said to fall under the Arcana Labs umbrella - in fact, it’s so old that the project itself has persisted through two full rebrands and renamings of the lab - Kensho Security Labs, and Patch Savage Labs before that. While I’m sure I’m now its only continuous user, the fact remains it is, at least for me, a profoundly useful backup utility… when it works.

Reviving Tapestry

01 Jul 2021

Tapestery is probably the oldest project most Arcana Labs followers would remember me working on. It began two iterations of identity ago, back when this was “Patch Savage Labs”, followed through the Kensho Security Labs Rebrand, and three jobs and several years later, it’s still with us - a bespoke backup utility nobody asked for.

Adding System Keyring Functionality to Tapestry

05 Feb 2021

Recently - this very morning, in fact - it was suggested that I move credential storage for Tapestry out of the “no, you’re not allowed” space and into the local system keyring by use of the python library module of the same name. After a quick review I decided I would, and the current version of the development code for Tapestry already includes the necessary changes. I did however want to talk about why this decision was made and why you may or may not want to use it.