import { Untar } from "https://dotland.deno.dev/std@0.224.0/archive/mod.ts";
Overview
A class to extract from a tar archive. Tar archives allow for storing multiple files in a single file (called an archive, or sometimes a tarball). These archives typically have the '.tar' extension.
Supported file formats
Only the ustar file format is supported. This is the most common format. The pax file format may also be read, but additional features, such as longer filenames may be ignored.
Usage
The workflow is to create a Untar instance referencing the source of the tar file. You can then use the untar reference to extract files one at a time. See the worked example below for details.
Understanding compression
A tar archive may be compressed, often identified by the .tar.gz
extension.
This utility does not support decompression which must be done before extracting
the files.
Examples
Example 1
Example 1
import { Untar } from "https://deno.land/std@0.224.0/archive/untar.ts";
import { ensureFile } from "https://deno.land/std@0.224.0/fs/ensure_file.ts";
import { ensureDir } from "https://deno.land/std@0.224.0/fs/ensure_dir.ts";
import { copy } from "https://deno.land/std@0.224.0/io/copy.ts";
using reader = await Deno.open("./out.tar", { read: true });
const untar = new Untar(reader);
for await (const entry of untar) {
console.log(entry); // metadata
if (entry.type === "directory") {
await ensureDir(entry.fileName);
continue;
}
await ensureFile(entry.fileName);
using file = await Deno.open(entry.fileName, { write: true });
// <entry> is a reader.
await copy(entry, file);
}
Methods
Iterate over all entries of the tar archive.