Nik*_*ble 3 backup ubuntu amazon-s3 database-backups digital-ocean
我有带有文件和 MySQL 数据库的数字海洋水滴,并且希望每天(即每个午夜)将其备份到 aws s3 存储桶上
使用 root 访问权限登录您的 Droplet
1.//首先安装awscli
apt install awscli
Run Code Online (Sandbox Code Playgroud)
2. //创建S3存储桶并提供以下详细信息
aws configure
AWS Access Key ID [None]: {enter your access key id}
AWS Secret Access Key [None]: {enter your secret access key}
Default region name [None]: {enter your preferred region}
Default output format [None]: {enter your preferred format}
Run Code Online (Sandbox Code Playgroud)
3.//测试连接是否正常?
aws s3 cp file.zip s3://{bucket_name}
Run Code Online (Sandbox Code Playgroud)
4.//创建实际脚本(backup.sh)
#!/bin/sh
# Database credentials
DATABASE="database-name"
USERNAME="database_user"
PASSWORD="password"
# Directory to back up
SOURCE_DIR= Files_path_here
# Target
TARGET_DIR=/backup
TARGET_BUCKET= Bucket-name
# Output files
NOW=$(date +"%Y_%m_%d_%H_%M_%S")
DB_OUTPUT=$TARGET_DIR/db.$NOW.sql.gz
FILES_OUTPUT=$TARGET_DIR/files.$NOW.zip
# Back up files
zip -r $FILES_OUTPUT $SOURCE_DIR
# Back up database
mysqldump -u $USERNAME -p"$PASSWORD" $DATABASE --single-transaction | gzip > $DB_OUTPUT
# Upload to S3
aws s3 cp $DB_OUTPUT s3://$TARGET_BUCKET
aws s3 cp $FILES_OUTPUT s3://$TARGET_BUCKET
# Remove files older than 14 days
find $TARGET_DIR -type f -mtime +14 | xargs rm -f
Run Code Online (Sandbox Code Playgroud)
5.//授予权限
chmod 700 backup.sh
Run Code Online (Sandbox Code Playgroud)
6.//将此bash文件(即backup.sh)转换为linux兼容的
sed -i -e 's/\r$//' backup.sh
Run Code Online (Sandbox Code Playgroud)
7.// 通过从命令行运行备份来测试备份:
./backup.sh
Run Code Online (Sandbox Code Playgroud)
8.//以下命令编辑crontab
crontab -e
Run Code Online (Sandbox Code Playgroud)
9.在底部添加以下行:
0 22 * * * /path/to/backup.sh
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1070 次 |
| 最近记录: |