Snapshot Helper is a utility designed to assist with managing and creating snapshots in a streamlined way. The tool is written in Kotlin and uses Docker for containerization, making it easy to deploy and use in various environments.
Files larger than 10GB are not recommended for upload due to performance considerations. Processing such large files may result in slower performance and increased resource usage. If you need to upload a file larger than 10GB, we recommend the projects below.
- Goofys
- S3FS-FUSE
- RClone
- ObjectiveFS
- Automates snapshot creation
- Docker container support
- Easily configurable through YAML
- Docker
- Java 21+ (Currently LTS)
- Clone the repository:
git clone https://github.com/DeSpread/snapshot-helper.git cd snapshot-helper
- Build the project:
./gradlew build
-
Configure the snapshot settings in
compose.yaml
. -
Run the Docker container:
docker compose up
To request a snapshot using the POST API, send a request to the following endpoint:
/api/v1/snapshot/multipart
Example payload:
{
"sourceDirectoryPath": "/home/ubuntu/source_directory_path",
"s3Key": "{your_s3_object_name}.tar.lz4",
"notifyProgressIntervalSecond": 60
}
In this example:
-
sourceDirectoryPath
represents the directory you want to compress into a tarball. The files and subdirectories within this path will be compressed into a single.tar.lz4
file. -
For instance, if
sourceDirectoryPath
is set to/home/ubuntu/source_directory_path
, and the structure ofsource_directory_path
is:source_directory_path ├── data_directory_1 └── data_directory_2
After compressing, the tarball will contain both
data_directory_1
anddata_directory_2
. When you extract the tarball, it will restoredata_directory_1
anddata_directory_2
exactly as they were in the original directory.
Feel free to submit pull requests or open issues to suggest improvements or report bugs.
This project is licensed under the MIT License.