diff --git a/README.md b/README.md index 8879b94..07d4363 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,13 @@ # bastion -Scripts that integrate RCAC Fortress, MS Teams, etc. +Scripts that integrate RCAC Fortress, MS Teams, etc. to provide a reliable and flexible backup system. -## Concepts +# Concepts + +## Vaults +A vault is a storage pool and the necessary protocol to move objects in / out of the pool. +(RCAC's Fortress, for instance, can use HPSS, sftp, and Globus as protocols for file transfer.) + +## Assets Data assets can have concurrent presence in three different namespaces: 1. the host file system 2. the logical zone (kind of like a "location" when configuring a web server) @@ -25,3 +31,35 @@ These objects are described using a BLONDE (BLOb Name and Description Encoded), In the vault, a BLONDE can either be an anchor (full backup) or a differential. References to assets are done by "badge" - which is a 40 bit chunk from a SHAKE128 hash of the asset's ARK (in CURIE format). Time is also highly compressed using "Quantim" + +## ARKs +Asset Resource Keys - a triple of (site, zone, path) where path is relative to the root of the zone. +ARKs are typically represented in CURIE syntax that has a form like "\[@{site}:{zone}/{path}\]". +For example, "\[@idifhub:LiDAR/QLX\_3DEP\_LiDAR\_US\_SOUTH\]" + +## Quantim +"Quantim" is a textual representation of time that uses 8 ASCII characters to represent time to near minute resolution for the next 900+ years. Quantim timestamps follow the pattern "YYYDDDTT" where YYY is the three digit century and year, DDD is the current day of the year, and TT is the time of day encoded using base 36. + +Since there are 1,296 2-digit base 36 numbers and 1,440 minutes per day, each TT represents 1.11 minutes (or 66.7 seconds). + +# Commands +bastion is run via conda+python and can be run from an interactive shell, or (using "conda run ...") from a cron job. bastion has the following command set ... + +* bastion backup site {site} +* bastion backup zone {ark} +* bastion backup asset {ark} +* bastion update site {site} +* bastion update zone {ark} +* bastion update asset {ark} +* bastion refresh keytab {vault} +* bastion restore zone {ark} +* bastion restore asset {ark} +* bastion restore site {site} +* bastion \[list|export\] zone assets {ark} +* bastion \[list|export\] site assets {ark} +* bastion \[list|export\] zones {site} +* bastion \[list|export\] sites +* bastion \[list|export\] anchors {ark} +* bastion \[list|export\] snaps {ark} + +