备份Cloudflare R2重要文件到BackBlaze B2
前提:
1. 确保安装rclone
2. 配置好rclone config r2、b2
3. 确保需要备份哪些文件/文件夹
以我备份Cloudflare R2 Mastodon-Main的“本地”媒体到Backblaze B2 Hostdzire-SFO-Backup(我的策略是每一个服务器对于Backblaze的一个bucket用于备份)
流程:
从Cloudflare R2下载本地文件到本地——在本地打包为tar.gz——上传到Backblaze对应bucket
- 确保bucket存在
rclone lsd r2:mastodon-main
rclone lsd b2:Hostdzire-SFO-Backup
- 配置文件名环境变量
DATE=$(date +%Y%m%d)
ARCHIVE_NAME="mastodon-media-${DATE}.tar.gz"
ARCHIVE_NAME="mastodon-media-${DATE}.tar.gz"
ARCHIVE_PATH="/tmp/${ARCHIVE_NAME}"
B2_DEST="b2:Hostdzire-SFO-Backup/mastodon/main"- 创建用于存储媒体的临时目录
TMPDIR=/tmp/mastodon-media-backup
mkdir -p $TMPDIR- 从R2拉取三个目录,并且显示进度
一般accounts最快,media_attachment较快,custom_emojis对我来说最慢
rclone copy r2:mastodon-main/accounts $TMPDIR/accounts --progress
rclone copy r2:mastodon-main/custom_emojis $TMPDIR/custom_emojis --progress
rclone copy r2:mastodon-main/media_attachments $TMPDIR/media_attachments --progress对于custom_emojis可以单独修改使用这个命令提高并发(transfers)
rclone copy r2:mastodon-main/media_attachments $TMPDIR/media_attachments \
--progress \
--stats 5s \
--transfers 8 \
--checkers 16
- 确保有以下的文件夹
$TMPDIR/
├── accounts/
├── custom_emojis/
└── media_attachments/- 打包3个文件夹为tar.gz文件
tar -czvf $ARCHIVE_PATH \
-C $TMPDIR \
accounts custom_emojis media_attachments- 检查tar.gz文件是否存在
ls -lh $ARCHIVE_PATH- 上传tar.gz文件到b2:Hostdzire-SFO-Backup/mastodon/main下
rclone copy \
$ARCHIVE_PATH \
$B2_DEST \
--progress \
--checksum
- 检查tar.gz文件是否成功上传
rclone ls $B2_DEST | grep $ARCHIVE_NAME- 确保本地tar.gz文件未损坏
tar -tzf $ARCHIVE_PATH | head- 删除三个目录
rm -rf \
$TMPDIR/accounts \
$TMPDIR/custom_emojis \
$TMPDIR/media_attachments- 删除tar.gz文件
rm -f $ARCHIVE_PATH- 清空临时目录
rmdir $TMPDIR 2>/dev/null || true