首页 > 技术文章 > rsync本地同步

zhaokunhao 2021-04-19 21:36 原文

rsync本地备份

制作异地镜像站点

目的:为异地备份做好准备工作

rsync原理

rsync远程传数据可以简单总结成三步
1、先验证用户身份
2、检查源路径到底需要哪些文件
3、传输

rsync总结

1、耗费cpu资源
2、源路径下如果是频繁改动的,rsync不适合,比如数据库文件
3、不适合同步大文件

软硬链接的区别

脚本使用(解读)

#!/bin/bash
set -o errexit	#脚本发生错误就终止运行,不是一声不响的继续往下执行
set -o nounset	#在shell中,遇到变量不存在,会输出为空,继续执行代码
				#开启了nounset选项后,脚本若是碰到变量定义会报错并且终止运行
set -o pipefail	#上面的选项errexit针对管道是无效的,这个针对管道

readonly SOURCE_DIR="/opt"	#备份的源目录
readonly TARGET_START_DIR="/egon/backups"	#目标目录的起始目录
readonly TARGET_DIR="${TARGET_START_DIR}/$(date '+%Y-%m-%d_%H:%M:%s')"	#目标目录
readonly LATEST_LINK="${TARGET_START_DIR}/latest"	#基准目录

mkdir -p "${TARGET_START_DIR}"	#先把目标目录的起始目录创建好

rsync -av --delete \
"${SOURCE_DIR}/" \
--link-dest "${LATEST_LINK}" \
--exclude=".cache" \
"${TARGET_DIR}"

#删除基准目录LATEST_LINK,然后将最近一次备份的目录链接到LATEST_LINK作为下一次的基准目录
rm -rf "${LATEST_LINK}"
ln -s "${TARGET_DIR}" "${LATEST_LINK}"

脚本模板

#!/bin/bash
set -o errexit
set -o nounset
set -o pipefail

readonly SOURCE_DIR="源目录"
readonly TARGET_START_DIR="目标目录的起始目录"
readonly TARGET_DIR="${TARGET_START_DIR}/$(date '+%Y-%m-%d_%H:%M:%s')"	#目标目录
readonly LATEST_LINK="${TARGET_START_DIR}/latest"	#基准目录

mkdir -p "${TARGET_START_DIR}"

rsync -av --delete \
"${SOURCE_DIR}/" \
--link-dest "${LATEST_LINK}" \
--exclude=".cache" \
"${TARGET_DIR}"

#删除基准目录LATEST_LINK,然后将最近一次备份的目录链接到LATEST_LINK作为下一次的基准目录
rm -rf "${LATEST_LINK}"
ln -s "${TARGET_DIR}" "${LATEST_LINK}"

推荐阅读