Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
D
dir-backup-s3
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Locked Files
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Security & Compliance
Security & Compliance
Dependency List
License Compliance
Packages
Packages
List
Container Registry
Analytics
Analytics
CI / CD
Code Review
Insights
Issues
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
nanahira
dir-backup-s3
Commits
98c6f58c
Commit
98c6f58c
authored
Jul 11, 2022
by
nanahira
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
first
parent
e754e564
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
189 additions
and
2 deletions
+189
-2
.gitlab-ci.yml
.gitlab-ci.yml
+64
-0
Dockerfile
Dockerfile
+18
-0
README.md
README.md
+30
-2
backup.sh
backup.sh
+37
-0
install.sh
install.sh
+27
-0
run.sh
run.sh
+13
-0
No files found.
.gitlab-ci.yml
0 → 100644
View file @
98c6f58c
stages
:
-
build
-
combine
-
deploy
variables
:
GIT_DEPTH
:
"
1"
CONTAINER_TEST_IMAGE
:
$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG
CONTAINER_TEST_ARM_IMAGE
:
$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG-arm
CONTAINER_TEST_X86_IMAGE
:
$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG-x86
CONTAINER_RELEASE_IMAGE
:
$CI_REGISTRY_IMAGE:latest
before_script
:
-
docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
build-x86
:
stage
:
build
tags
:
-
docker
script
:
-
docker build --pull -t $CONTAINER_TEST_X86_IMAGE .
-
docker push $CONTAINER_TEST_X86_IMAGE
build-arm
:
stage
:
build
tags
:
-
docker-arm
script
:
-
docker build --pull -t $CONTAINER_TEST_ARM_IMAGE .
-
docker push $CONTAINER_TEST_ARM_IMAGE
combine
:
stage
:
combine
tags
:
-
docker
script
:
-
docker pull $CONTAINER_TEST_X86_IMAGE
-
docker pull $CONTAINER_TEST_ARM_IMAGE
-
docker manifest create $CONTAINER_TEST_IMAGE --amend $CONTAINER_TEST_X86_IMAGE --amend $CONTAINER_TEST_ARM_IMAGE
-
docker manifest push $CONTAINER_TEST_IMAGE
deploy_latest
:
stage
:
deploy
tags
:
-
docker
script
:
-
docker pull $CONTAINER_TEST_IMAGE
-
docker tag $CONTAINER_TEST_IMAGE $CONTAINER_RELEASE_IMAGE
-
docker push $CONTAINER_RELEASE_IMAGE
only
:
-
master
deploy_tag
:
stage
:
deploy
tags
:
-
docker
variables
:
CONTAINER_TAG_IMAGE
:
$CI_REGISTRY_IMAGE:$CI_COMMIT_TAG
script
:
-
docker pull $CONTAINER_TEST_IMAGE
-
docker tag $CONTAINER_TEST_IMAGE $CONTAINER_TAG_IMAGE
-
docker push $CONTAINER_TAG_IMAGE
only
:
-
tags
Dockerfile
0 → 100644
View file @
98c6f58c
FROM
alpine:latest
ADD
install.sh install.sh
RUN
sh install.sh
&&
rm
install.sh
ENV
BACKUP_DIR=/data
ENV
S3_ACCESS_KEY_ID **None**
ENV
S3_SECRET_ACCESS_KEY **None**
ENV
S3_BUCKET **None**
ENV
S3_REGION us-west-1
ENV
S3_PATH 'backup'
ENV
S3_ENDPOINT **None**
ENV
S3_S3V4 no
ENV
SCHEDULE **None**
ADD
run.sh run.sh
ADD
backup.sh backup.sh
CMD
["sh", "run.sh"]
README.md
View file @
98c6f58c
#
dir
-backup-s3
#
postgres
-backup-s3
Dir backup s3 support.
Backup directory to S3 (supports periodic backups)
\ No newline at end of file
## Usage
Docker:
```
sh
$
docker run
-e
S3_ACCESS_KEY_ID
=
key
-e
S3_SECRET_ACCESS_KEY
=
secret
-e
S3_BUCKET
=
my-bucket
-e
S3_PREFIX
=
backup
-e
POSTGRES_DATABASE
=
dbname
-e
POSTGRES_USER
=
user
-e
POSTGRES_PASSWORD
=
password
-e
POSTGRES_HOST
=
localhost git-registry.mycard.moe/nanahira/dir-backup-s3
```
Docker Compose:
```
yaml
backups3
:
image
:
git-registry.mycard.moe/nanahira/dir-backup-s3
volumes
:
-
/path/to/backup:/data:ro
environment
:
SCHEDULE
:
'
@daily'
S3_REGION
:
region
S3_ACCESS_KEY_ID
:
key
S3_SECRET_ACCESS_KEY
:
secret
S3_BUCKET
:
my-bucket
S3_PREFIX
:
backup
```
### Automatic Periodic Backups
You can additionally set the
`SCHEDULE`
environment variable like
`-e SCHEDULE="@daily"`
to run the backup automatically.
More information about the scheduling can be found
[
here
](
http://godoc.org/github.com/robfig/cron#hdr-Predefined_schedules
)
.
backup.sh
0 → 100644
View file @
98c6f58c
#! /bin/sh
set
-e
set
-o
pipefail
if
[
"
${
S3_ACCESS_KEY_ID
}
"
=
"**None**"
]
;
then
echo
"You need to set the S3_ACCESS_KEY_ID environment variable."
exit
1
fi
if
[
"
${
S3_SECRET_ACCESS_KEY
}
"
=
"**None**"
]
;
then
echo
"You need to set the S3_SECRET_ACCESS_KEY environment variable."
exit
1
fi
if
[
"
${
S3_BUCKET
}
"
=
"**None**"
]
;
then
echo
"You need to set the S3_BUCKET environment variable."
exit
1
fi
if
[
"
${
S3_ENDPOINT
}
"
==
"**None**"
]
;
then
AWS_ARGS
=
""
else
AWS_ARGS
=
"--endpoint-url
${
S3_ENDPOINT
}
"
fi
# env vars needed for aws tools
export
AWS_ACCESS_KEY_ID
=
$S3_ACCESS_KEY_ID
export
AWS_SECRET_ACCESS_KEY
=
$S3_SECRET_ACCESS_KEY
export
AWS_DEFAULT_REGION
=
$S3_REGION
echo
"Creating backup from
${
BACKUP_DIR
}
..."
echo
"Uploading backup to
$S3_BUCKET
"
tar
--zstd
-cf
-
"
$BACKUP_DIR
"
| aws
$AWS_ARGS
s3
cp
- s3://
$S3_BUCKET
/
$S3_PREFIX
/
$(
date
+
"%Y-%m-%dT%H:%M:%SZ"
)
.tar.zst
||
exit
2
echo
"Directory backup uploaded successfully"
install.sh
0 → 100644
View file @
98c6f58c
#! /bin/sh
# exit if a command fails
set
-e
apk update
apk add python3 py3-pip tzdata zstd
tar
cp
-rf
/usr/share/zoneinfo/Asia/Shanghai /etc/localtime
echo
"Asia/Shanghai"
>
/etc/timezone
# install s3 tools
pip
install
awscli
# install go-cron
apk add curl
curl
-L
--insecure
https://github.com/odise/go-cron/releases/download/v0.0.6/go-cron-linux.gz | zcat
>
/usr/local/bin/go-cron
chmod
u+x /usr/local/bin/go-cron
apk del curl tzdata
# cleanup
rm
-rf
/var/cache/apk/
*
run.sh
0 → 100644
View file @
98c6f58c
#! /bin/sh
set
-e
if
[
"
${
S3_S3V4
}
"
=
"yes"
]
;
then
aws configure
set
default.s3.signature_version s3v4
fi
if
[
"
${
SCHEDULE
}
"
=
"**None**"
]
;
then
sh backup.sh
else
exec
go-cron
"
$SCHEDULE
"
/bin/sh backup.sh
fi
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment