rsync本地备份
制作异地镜像站点
目的:为异地备份做好准备工作
rsync原理
rsync远程传数据可以简单总结成三步
1、先验证用户身份
2、检查源路径到底需要哪些文件
3、传输
rsync总结
1、耗费cpu资源
2、源路径下如果是频繁改动的,rsync不适合,比如数据库文件
3、不适合同步大文件
软硬链接的区别
![](https://i-blog.csdnimg.cn/blog_migrate/2de293b8ff3c198b1fe778ad32694ff2.png)
脚本使用(解读)
#!/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}"