tar/untar extracted from golang/build's internals.
package main
import (
"context"
"log"
"cloud.google.com/go/storage"
"github.com/tetsuo/tar/gcs"
)
func main() {
ctx := context.Background()
// Initialize GCS client
client, err := storage.NewClient(ctx)
if err != nil {
log.Fatalf("failed to create GCS client: %v", err)
}
defer client.Close()
// Inputs
workDir := "/tmp/my-app" // full working directory path
relDir := "data" // subdir inside workDir to pack/unpack
bucketName := "my-bucket" // replace with your GCS bucket name
objectName := "archives/data.tar" // target object path in GCS
// Pack directory into GCS object
if err := gcs.Pack(ctx, client, workDir, relDir, bucketName, objectName); err != nil {
log.Fatalf("failed to pack: %v", err)
}
log.Println("Pack successful.")
// Unpack the GCS object back into directory
if err := gcs.Unpack(ctx, client, workDir, relDir, bucketName, objectName); err != nil {
log.Fatalf("failed to unpack: %v", err)
}
log.Println("Unpack successful.")
}