Another VPS backup

why

上次写的备份 VPS 的那个脚本,采用的是 tar 打包。虽然节省了空间,但每次全量传输,比较费流量。故此这次采用了 rsync 的增量传输,只传送变动的文件。

how

直接上脚本:

#!/bin/bash

set -euo pipefail

# 设置变量
SOURCE_DIRS=("$HOME" "/etc")
DEST_DIR="/mnt/disk/backup/${HOSTNAME%%.*}/"
REMOTE_HOST="host"
SSH_PORT=22
TODAY=$(date +'%Y%m%d')
YESTERDAY=$(date -d "yesterday" +'%Y%m%d')
EXPIRED_DAYS=7

echo "### Starting backup..."
for SOURCE_DIR in "${SOURCE_DIRS[@]}"; do
    rsync -avzh --delete --link-dest="$DEST_DIR$YESTERDAY" -e "ssh -p $SSH_PORT" "$SOURCE_DIR" "root@$REMOTE_HOST:$DEST_DIR$TODAY"
done

echo "### Data transferred. Deleting expired files..."
ssh -p "$SSH_PORT" "root@$REMOTE_HOST" "cd $DEST_DIR && find . -maxdepth 1 -mtime +$EXPIRED_DAYS -exec rm -rvf {} \+"

echo "### Job done!"

留下评论

您的邮箱地址不会被公开。 必填项已用 * 标注