diff options
| author | crupest <crupest@outlook.com> | 2022-11-23 19:22:37 +0800 | 
|---|---|---|
| committer | crupest <crupest@outlook.com> | 2022-11-23 19:22:37 +0800 | 
| commit | f083272356417be74a5864d5ef6cfb1878558826 (patch) | |
| tree | 6a489c787c073e4b4bc2b722759c098899bfea15 | |
| parent | fc2b0e84cc359e45c09e81135702babc2284dfb1 (diff) | |
| download | crupest-f083272356417be74a5864d5ef6cfb1878558826.tar.gz crupest-f083272356417be74a5864d5ef6cfb1878558826.tar.bz2 crupest-f083272356417be74a5864d5ef6cfb1878558826.zip | |
Replace rclone with coscli.
| -rw-r--r-- | docker/auto-backup/Dockerfile | 12 | ||||
| -rwxr-xr-x | docker/auto-backup/daemon.bash | 30 | ||||
| -rwxr-xr-x | docker/auto-backup/install-coscli.bash | 17 | ||||
| -rw-r--r-- | template/coscli-config.yaml.template | 9 | ||||
| -rw-r--r-- | template/docker-compose.yaml.template | 4 | ||||
| -rw-r--r-- | template/rclone.conf.template | 7 | 
6 files changed, 54 insertions, 25 deletions
| diff --git a/docker/auto-backup/Dockerfile b/docker/auto-backup/Dockerfile index a826f4a..7df267c 100644 --- a/docker/auto-backup/Dockerfile +++ b/docker/auto-backup/Dockerfile @@ -1,11 +1,15 @@ +FROM alpine:latest AS coscli-downloader +RUN apk add --no-cache bash curl jq +COPY install-coscli.bash /install-coscli.bash +RUN /install-coscli.bash +  FROM alpine:latest -RUN apk add --no-cache coreutils bash tar xz rclone -ARG CRUPEST_AUTO_BACKUP_BUCKET_NAME +RUN apk add --no-cache coreutils bash tar xz yq  ARG CRUPEST_AUTO_BACKUP_INIT_DELAY=0  ARG CRUPEST_AUTO_BACKUP_INTERVAL=1d  ENV CRUPEST_AUTO_BACKUP_INIT_DELAY=${CRUPEST_AUTO_BACKUP_INIT_DELAY}  ENV CRUPEST_AUTO_BACKUP_INTERVAL=${CRUPEST_AUTO_BACKUP_INTERVAL} -ENV CRUPEST_AUTO_BACKUP_BUCKET_NAME=${CRUPEST_AUTO_BACKUP_BUCKET_NAME} +COPY --from=coscli-downloader /coscli /coscli  COPY daemon.bash /daemon.bash -VOLUME [ "/data", "/config/rclone/rclone.conf" ] +VOLUME [ "/data", "/root/.cos.yaml" ]  ENTRYPOINT [ "/daemon.bash" ] diff --git a/docker/auto-backup/daemon.bash b/docker/auto-backup/daemon.bash index 33708ee..6a39fa5 100755 --- a/docker/auto-backup/daemon.bash +++ b/docker/auto-backup/daemon.bash @@ -8,18 +8,23 @@ if [[ $EUID -ne 0 ]]; then      exit 1  fi -# Check if CRUPEST_AUTO_BACKUP_BUCKET_NAME is defined. -if [[ -z "$CRUPEST_AUTO_BACKUP_BUCKET_NAME" ]]; then -    echo "CRUPEST_AUTO_BACKUP_BUCKET_NAME is not defined or empty" -    exit 1 -fi - -rclone --version +/coscli --version  # Check xz and tar  xz --version  tar --version +bucket_yaml=$(/coscli config show | yq ".buckets[] | select(.alias == \"crupest-backup\")") + +# check bucket_yaml is not empty +if [[ -z "$bucket_yaml" ]]; then +    echo "Bucket crupest-backup not found. Please check your coscli config." 1>&2 +    exit 1 +fi + +bucket_name=$(echo "$bucket_yaml" | yq ".name") +bucket_region=$(echo "$bucket_yaml" | yq ".region") +  function backup {      # Output "Begin backup..." in yellow and restore default      echo -e "\e[0;103m\e[K\e[1mBegin backup..." "\e[0m" @@ -33,12 +38,15 @@ function backup {      tar -cJf /tmp/data.tar.xz -C / data      # Output /tmp/data.tar.xz size -    du -h /tmp/data.tar.xz +    du -h /tmp/data.tar.xz | cut -f1 | xargs echo "Size of data.tar.xz:" + +    destination="cos://crupest-backup/$current_time.tar.xz" +    echo "Use coscli to upload data to $destination ..." +    echo "Bucket name: $bucket_name" +    echo "Bucket region: $bucket_region" -    destination="mycos:$CRUPEST_AUTO_BACKUP_BUCKET_NAME/$current_time.tar.xz" -    echo "Use rclone to upload data to $destination ..."      # upload to remote -    rclone -vv copyto /tmp/data.tar.xz "$destination" +    /coscli cp /tmp/data.tar.xz "$destination"       echo "Remove tmp file..."      # remove tmp diff --git a/docker/auto-backup/install-coscli.bash b/docker/auto-backup/install-coscli.bash new file mode 100755 index 0000000..d3a45b0 --- /dev/null +++ b/docker/auto-backup/install-coscli.bash @@ -0,0 +1,17 @@ +#!/usr/bin/env bash + +set -e + +# Check I'm root. +if [[ $EUID -ne 0 ]]; then +    echo "This script must be run as root" 1>&2 +    exit 1 +fi + +download_url=$(curl -s https://api.github.com/repos/tencentyun/coscli/releases/latest | jq -r ".assets[] | select(.name | test(\"coscli-linux\")) | .browser_download_url") + +curl -L -o /coscli "$download_url" + +chmod +x /coscli + +/coscli --version diff --git a/template/coscli-config.yaml.template b/template/coscli-config.yaml.template new file mode 100644 index 0000000..d0768a3 --- /dev/null +++ b/template/coscli-config.yaml.template @@ -0,0 +1,9 @@ +cos: +  base: +    secretid: ${CRUPEST_AUTO_BACKUP_COS_ACCESS_KEY_ID} +    secretkey: ${CRUPEST_AUTO_BACKUP_COS_SECRET_ACCESS_KEY} +    sessiontoken: "" +  buckets: +  - name: ${CRUPEST_AUTO_BACKUP_BUCKET_NAME} +    alias: crupest-backup +    region: ${CRUPEST_AUTO_BACKUP_COS_REGION} diff --git a/template/docker-compose.yaml.template b/template/docker-compose.yaml.template index fe87da6..af87acc 100644 --- a/template/docker-compose.yaml.template +++ b/template/docker-compose.yaml.template @@ -106,14 +106,12 @@ services:        context: ./docker/auto-backup        dockerfile: Dockerfile        pull: true -      args: -        - CRUPEST_AUTO_BACKUP_BUCKET_NAME=${CRUPEST_AUTO_BACKUP_BUCKET_NAME}        tags:          - "crupest/auto-backup:latest"      container_name: auto-backup      volumes:        - "./data:/data" -      - "./rclone.conf:/root/.config/rclone/rclone.conf:ro" +      - "./coscli-config.yaml:/root/.cos.yaml:ro"      restart: on-failure:3      networks:        - internal diff --git a/template/rclone.conf.template b/template/rclone.conf.template deleted file mode 100644 index 38ef2dd..0000000 --- a/template/rclone.conf.template +++ /dev/null @@ -1,7 +0,0 @@ -[mycos] -type = s3 -provider = TencentCOS -access_key_id = ${CRUPEST_AUTO_BACKUP_COS_ACCESS_KEY_ID} -secret_access_key = ${CRUPEST_AUTO_BACKUP_COS_SECRET_ACCESS_KEY} -endpoint = cos.${CRUPEST_AUTO_BACKUP_COS_REGION}.myqcloud.com -acl = default | 
