千牛里的windows是什么软件下载
资讯
比较重要的数据最好还是经常备份,以免数据丢失后悔莫及。对于有快照的服务器,可以利用快照进行备份,对于没有快照的,可以利用 rsync 备份到本地。
以下脚本可以方便地进行备份,修改配置后定时运行即可:
# 日志统一重定向 | |
# 将所有输出重定向到 /tmp/backup.log,包括错误信息 | |
exec >> /tmp/backup.log 2>&1 | |
# 定义要排除的多个文件/目录(默认的排除项) | |
global_exclude_dirs=("*.git" "tmp") | |
# 定义主机的配置信息 | |
hosts=( | |
# 每个主机配置:用户名, 主机IP, ssh端口, ssh密码, 远程目录, 本地目录, 排除的目录 | |
"root,172.21.9.126,22,test,/home/docker,/back/126,exclude_dirs", | |
"root,172.21.9.127,22,test2,/home/docker,/back/127,exclude_dirs" | |
) | |
# 获取当前时间并格式化为 YYYY-MM-DD HH:MM:SS 格式 | |
log_time() { | |
date +"%Y-%m-%d %H:%M:%S" | |
} | |
# 记录备份开始时间 | |
echo "$(log_time) 备份脚本开始运行" | |
# 从配置数组中读取每台主机的备份信息并执行操作 | |
for host_info in "${hosts[@]}"; do | |
# 解析主机配置 | |
IFS=',' read -r username host_ip ssh_port password remote_dir local_dir exclude_dirs <<< "$host_info" | |
# 设置日志文件 | |
log_file="$local_dir/backup.log" | |
# 确保日志目录存在 | |
mkdir -p "$(dirname "$log_file")" | |
# 记录当前主机的备份开始时间 | |
echo "$(log_time) 主机 $host_ip 开始备份" | |
echo "$(log_time) 主机 $host_ip 开始备份" >> "$log_file" | |
# 如果指定了特定的排除目录,则使用它们,否则使用全局排除目录 | |
if [ -z "$exclude_dirs" ]; then | |
exclude_dirs="${global_exclude_dirs[*]}" | |
fi | |
# 构建排除的参数 | |
exclude_params="" | |
IFS=',' read -r -a exclude_array <<< "$exclude_dirs" | |
for exclude_dir in "${exclude_array[@]}"; do | |
exclude_params+=" --exclude=$exclude_dir" | |
done | |
# 执行增量备份,修改了目标路径,使得远程目录本身被备份到本地 | |
echo "$(log_time) 执行备份 $host_ip:$remote_dir 到本地 $local_dir" >> "$log_file" | |
sshpass -p "$password" rsync -avz --delete $exclude_params -e "ssh -p $ssh_port" "$username@$host_ip:$remote_dir" "$local_dir/" >> "$log_file" 2>&1 | |
# 备份完成 | |
echo "$(log_time) 主机 $host_ip 备份完成" >> "$log_file" | |
echo "$(log_time) 主机 $host_ip 备份完成" | |
done | |
# 记录备份执行结束时间 | |
echo "$(log_time) 备份脚本结束运行" |
使用该脚本可以对所有服务器一次性备份,也可以指定服务器进行备份,输入参数即可,参数按关键词匹配:
# 只备份 172.21.9.126bash backup.sh 126# 备份 172.21.9.126 和 172.21.9.127bash backup.sh 126 127# 或者bash backup.sh 12
本网站部分资源来自网络,仅供大家学习参考,请与24小时之内删除 软件无法下载或下载后无法使用,请点击报错,谢谢!