summaryrefslogtreecommitdiff
path: root/vendor/github.com/vbatts/tar-split
diff options
context:
space:
mode:
authorValentin Rothberg <rothberg@redhat.com>2019-06-24 11:29:13 +0200
committerValentin Rothberg <rothberg@redhat.com>2019-06-24 13:20:59 +0200
commitd697456dc90adbaf68224ed7c115b38d5855e582 (patch)
tree5fd88c48b34e7bead0028fa97e39f43f03880642 /vendor/github.com/vbatts/tar-split
parenta3211b73c62a9fcc13f09305bf629ef507b26d34 (diff)
downloadpodman-d697456dc90adbaf68224ed7c115b38d5855e582.tar.gz
podman-d697456dc90adbaf68224ed7c115b38d5855e582.tar.bz2
podman-d697456dc90adbaf68224ed7c115b38d5855e582.zip
migrate to go-modules
Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
Diffstat (limited to 'vendor/github.com/vbatts/tar-split')
-rw-r--r--vendor/github.com/vbatts/tar-split/README.md137
1 files changed, 0 insertions, 137 deletions
diff --git a/vendor/github.com/vbatts/tar-split/README.md b/vendor/github.com/vbatts/tar-split/README.md
deleted file mode 100644
index fe997f69b..000000000
--- a/vendor/github.com/vbatts/tar-split/README.md
+++ /dev/null
@@ -1,137 +0,0 @@
-# tar-split
-
-[![Build Status](https://travis-ci.org/vbatts/tar-split.svg?branch=master)](https://travis-ci.org/vbatts/tar-split)
-[![Go Report Card](https://goreportcard.com/badge/github.com/vbatts/tar-split)](https://goreportcard.com/report/github.com/vbatts/tar-split)
-
-Pristinely disassembling a tar archive, and stashing needed raw bytes and offsets to reassemble a validating original archive.
-
-## Docs
-
-Code API for libraries provided by `tar-split`:
-
-* https://godoc.org/github.com/vbatts/tar-split/tar/asm
-* https://godoc.org/github.com/vbatts/tar-split/tar/storage
-* https://godoc.org/github.com/vbatts/tar-split/archive/tar
-
-## Install
-
-The command line utilitiy is installable via:
-
-```bash
-go get github.com/vbatts/tar-split/cmd/tar-split
-```
-
-## Usage
-
-For cli usage, see its [README.md](cmd/tar-split/README.md).
-For the library see the [docs](#docs)
-
-## Demo
-
-### Basic disassembly and assembly
-
-This demonstrates the `tar-split` command and how to assemble a tar archive from the `tar-data.json.gz`
-
-
-![basic cmd demo thumbnail](https://i.ytimg.com/vi/vh5wyjIOBtc/2.jpg?time=1445027151805)
-[youtube video of basic command demo](https://youtu.be/vh5wyjIOBtc)
-
-### Docker layer preservation
-
-This demonstrates the tar-split integration for docker-1.8. Providing consistent tar archives for the image layer content.
-
-![docker tar-split demo](https://i.ytimg.com/vi_webp/vh5wyjIOBtc/default.webp)
-[youtube vide of docker layer checksums](https://youtu.be/tV_Dia8E8xw)
-
-## Caveat
-
-Eventually this should detect TARs that this is not possible with.
-
-For example stored sparse files that have "holes" in them, will be read as a
-contiguous file, though the archive contents may be recorded in sparse format.
-Therefore when adding the file payload to a reassembled tar, to achieve
-identical output, the file payload would need be precisely re-sparsified. This
-is not something I seek to fix immediately, but would rather have an alert that
-precise reassembly is not possible.
-(see more http://www.gnu.org/software/tar/manual/html_node/Sparse-Formats.html)
-
-
-Other caveat, while tar archives support having multiple file entries for the
-same path, we will not support this feature. If there are more than one entries
-with the same path, expect an err (like `ErrDuplicatePath`) or a resulting tar
-stream that does not validate your original checksum/signature.
-
-## Contract
-
-Do not break the API of stdlib `archive/tar` in our fork (ideally find an upstream mergeable solution).
-
-## Std Version
-
-The version of golang stdlib `archive/tar` is from go1.11
-It is minimally extended to expose the raw bytes of the TAR, rather than just the marshalled headers and file stream.
-
-
-## Design
-
-See the [design](concept/DESIGN.md).
-
-## Stored Metadata
-
-Since the raw bytes of the headers and padding are stored, you may be wondering
-what the size implications are. The headers are at least 512 bytes per
-file (sometimes more), at least 1024 null bytes on the end, and then various
-padding. This makes for a constant linear growth in the stored metadata, with a
-naive storage implementation.
-
-First we'll get an archive to work with. For repeatability, we'll make an
-archive from what you've just cloned:
-
-```bash
-git archive --format=tar -o tar-split.tar HEAD .
-```
-
-```bash
-$ go get github.com/vbatts/tar-split/cmd/tar-split
-$ tar-split checksize ./tar-split.tar
-inspecting "tar-split.tar" (size 210k)
- -- number of files: 50
- -- size of metadata uncompressed: 53k
- -- size of gzip compressed metadata: 3k
-```
-
-So assuming you've managed the extraction of the archive yourself, for reuse of
-the file payloads from a relative path, then the only additional storage
-implications are as little as 3kb.
-
-But let's look at a larger archive, with many files.
-
-```bash
-$ ls -sh ./d.tar
-1.4G ./d.tar
-$ tar-split checksize ~/d.tar
-inspecting "/home/vbatts/d.tar" (size 1420749k)
- -- number of files: 38718
- -- size of metadata uncompressed: 43261k
- -- size of gzip compressed metadata: 2251k
-```
-
-Here, an archive with 38,718 files has a compressed footprint of about 2mb.
-
-Rolling the null bytes on the end of the archive, we will assume a
-bytes-per-file rate for the storage implications.
-
-| uncompressed | compressed |
-| :----------: | :--------: |
-| ~ 1kb per/file | 0.06kb per/file |
-
-
-## What's Next?
-
-* More implementations of storage Packer and Unpacker
-* More implementations of FileGetter and FilePutter
-* would be interesting to have an assembler stream that implements `io.Seeker`
-
-
-## License
-
-See [LICENSE](LICENSE)