mirror of
https://github.com/AlbrechtL/openwrt-docker.git
synced 2026-10-14 16:01:29 +00:00
65 lines
2.4 KiB
Markdown
65 lines
2.4 KiB
Markdown
## This is a copy from https://github.com/BretFisher/docker-vackup/
|
|
|
|
# Vackup: Backup and Restore Docker Volumes
|
|
|
|
[](https://github.com/BretFisher/docker-vackup/actions/workflows/linter.yml)
|
|
|
|
**This is now an [Official Docker Desktop Extension called "Volumes Backup & Share"](https://hub.docker.com/extensions/docker/volumes-backup-extension) which has more features, but I'll keep this repo around for historial purposes.**
|
|
|
|
Vackup: (contraction of "volume backup")
|
|
|
|
Easily backup and restore Docker volumes using either tarballs or container images.
|
|
It's designed for running from any host/container where you have the docker CLI.
|
|
|
|
Note that for open files like databases,
|
|
it's usually better to use their preferred backup tool to create a backup file,
|
|
but if you stored that file on a Docker volume,
|
|
this could still be a way you get the Docker volume into a image or tarball
|
|
for moving to remote storage for safe keeping.
|
|
|
|
`export`/`import` commands copy files between a local tarball and a volume.
|
|
For making volume backups and restores.
|
|
|
|
`save`/`load` commands copy files between an image and a volume.
|
|
For when you want to use image registries as a way to push/pull volume data.
|
|
|
|
Usage:
|
|
|
|
`vackup export VOLUME FILE`
|
|
Creates a gzip'ed tarball in current directory from a volume
|
|
|
|
`vackup import FILE VOLUME`
|
|
Extracts a gzip'ed tarball into a volume
|
|
|
|
`vackup save VOLUME IMAGE`
|
|
Copies the volume contents to a busybox image in the /volume-data directory
|
|
|
|
`vackup load IMAGE VOLUME`
|
|
Copies /volume-data contents from an image to a volume
|
|
|
|
## Install
|
|
|
|
Download the `vackup` file in this repository to your local machine in your shell path and make it executable.
|
|
|
|
```shell
|
|
sudo curl -sSL https://raw.githubusercontent.com/BretFisher/docker-vackup/main/vackup -o /usr/local/bin/vackup && sudo chmod +x /usr/local/bin/vackup
|
|
```
|
|
|
|
## Error conditions
|
|
|
|
If any of the commands fail, the script will check to see if a `VACKUP_FAILURE_SCRIPT`
|
|
environment variable is set. If so it will run it and pass the line number the error
|
|
happened on and the exit code from the failed command. Eg,
|
|
|
|
```shell
|
|
# /opt/bin/vackup-failed.sh
|
|
LINE_NUMBER=$1
|
|
EXIT_CODE=$2
|
|
send_slack_webhook "Vackup failed on line number ${LINE_NUMBER} with exit code ${EXIT_CODE}!"
|
|
```
|
|
|
|
```shell
|
|
export VACKUP_FAILURE_SCRIPT=/opt/bin/vackup-failed.sh
|
|
./vackup export ......
|
|
```
|