aboutsummaryrefslogtreecommitdiff
path: root/README.md
diff options
context:
space:
mode:
authorGravatar Benjamin Barenblat <bbaren@google.com>2021-01-26 18:18:53 -0500
committerGravatar Benjamin Barenblat <bbaren@google.com>2021-01-26 18:46:14 -0500
commit523c1be8407ff513dfdc8f13a707a1a9ade168a2 (patch)
treea79a0e684d46bf001be510bb937db726ab7886bd /README.md
Initialize project
Create a repository for gsrsup using the Google new project template. Everything here’s pretty standard. Reviewed-by: Alex Chernyakhovsky <achernya@google.com>
Diffstat (limited to 'README.md')
-rw-r--r--README.md28
1 files changed, 28 insertions, 0 deletions
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..ca640a3
--- /dev/null
+++ b/README.md
@@ -0,0 +1,28 @@
+# gsrsup
+
+`gsrsup` implements _resumable streaming uploads_ to Google Cloud Storage. It’s
+useful for uploading a reproducible stream of data too large to fit on disk. For
+example, you can upload a ZFS snapshot by running
+
+ zfs send tank/fs@snapshot | gsrsup gs://bucket/object
+
+This pipeline can be interrupted at any time; if rerun, `gsrsup` will seek to the
+appropriate place in the input stream and continue uploading from there.
+
+`gsrsup` performs integrity checking on the data it uploads and will report a
+problem if the input stream changes between two invocations. However, the design
+of the Google Cloud Storage API prevents `gsrsup` from detecting such a change
+until the entire stream has been uploaded.
+
+For safety, `gsrsup` treats Google Cloud Storage objects as append-only – it
+will never overwrite or delete them. Furthermore, it will never append to an
+object once its upload has completed. If you run
+
+ gsrsup gs://bucket/bash </bin/bash
+
+twice, the second invocation will skip uploading altogether and only run the
+integrity-checking code.
+
+---
+
+This is not an official Google product.