|
||
---|---|---|
.gitignore | ||
Dockerfile | ||
README.md | ||
docker-compose.yml | ||
go.mod | ||
main.go |
README.md
Tarballer
A simple utility to create tarballs with a specific directory structure.
Features
- Creates compressed tar archives (.tar.gz) from a source directory
- Places all files under a specified prefix directory in the tarball
- Preserves file permissions and directory structure
- Handles symbolic links correctly
- Cross-platform compatibility (FreeBSD, macOS, Linux)
Building
This project includes Docker support to build binaries for different platforms:
docker compose up --build build
This will create these binaries in the ./bin
directory:
tarballer-freebsd
: FreeBSD AMD64 compatible binarytarballer-darwin
: macOS ARM64 compatible binarytarballer-linux
: Linux AMD64 compatible binary
Testing
You can run the included test to verify functionality:
docker compose up --build test
This will:
- Create a test directory structure with nested directories and symlinks
- Create a tarball from it
- Extract the tarball
- Verify the contents and file structure, including symlinks
Usage
The usage is the same for all binaries:
./bin/tarballer-<platform> -source /path/to/directory -output myarchive.tar.gz -prefix myprefix
Options
-source
: The directory you want to compress (required)-output
: The name of the output tarball (defaults to "output.tar.gz")-prefix
: The directory name that will contain all files in the tarball (defaults to "myapp")
Example
# On macOS:
./bin/tarballer-darwin -source ./myproject -output release.tar.gz -prefix app
# On FreeBSD:
./bin/tarballer-freebsd -source ./myproject -output release.tar.gz -prefix app
When extracted, all files will be under the app/
directory in the tarball.