跨服务器同步数据库tar包数据
简介:将FTP/SFTP服务器上的数据库tar包数据周期同步到对应数据库中。
一、数据同步
(一)查找最新tar包并进行解压缩及同步到指定服务器 scpDmp.sh
该脚本的主要功能是在指定目录中查找最新的 .tar 文件,检查该文件是否已经处理过。如果未处理过,则将其文件名记录到一个文件中,然后解压缩该 .tar 文件,接着找出解压缩后最新的 .DMP 文件,并将其通过 scp 命令复制到远程服务器。
#!/bin/bash
# 指定脚本使用的解释器为 Bash
PATH=/bin:/usr/bin
# 设置环境变量 PATH,将 /bin 和 /usr/bin 加入到可执行文件的搜索路径中
export PATH
# 导出 PATH 环境变量,使其对后续的子进程也生效
(
# 使用括号将后续代码块括起来,表示在子 shell 中执行,这样可以避免对当前 shell 环境产生影响
record_file=\”/文件路径/processed_files.txt\”
# 定义一个变量 record_file,用于存储已经处理过的文件的记录文件的路径
existing_filenames=()
# 定义一个空数组 existing_filenames,用于存储已经处理过的文件的文件名
while IFS= read –r line; do
existing_filenames+=(\”$line\”)
done < \”$record_file\”
# 使用 while 循环逐行读取 record_file 文件中的内容
# IFS= 表示不进行字段分割,read –r 表示不处理反斜杠转义字符
# 每次读取一行内容后,将其添加到 existing_filenames 数组中
cd /tar包存放路径/
# 切换到指定目录 /tar包存放路径/
latest_tar_file=$(find –name \’*.tar\’ –type f –printf \’%T@ %p\\n\’ | sort –n | tail –1 | awk \'{print $2}\’)
# 使用 find 命令查找当前目录下所有扩展名为 .tar 的文件
# –name \’*.tar\’ 表示查找文件名以 .tar 结尾的文件
# –type f 表示只查找普通文件
# –printf \’%T@ %p\\n\’ 表示输出文件的修改时间戳和文件名,中间用空格分隔
# sort –n 表示按数字顺序对输出进行排序
# tail –1 表示取排序后的最后一行,即最新的文件
# awk \'{print $2}\’ 表示提取每行的第二个字段,即文件名
# 将最终结果赋值给变量 latest_tar_file
filename=$(basename \”$latest_tar_file\”)
# 使用 basename 命令获取 latest_tar_file 的文件名部分,去除路径信息,并赋值给变量 filename
for existing_filename in \”${existing_filenames[@]}\”; do
if [ \”$filename\” == \”$existing_filename\” ]; then
echo \”The file $filename has already been processed. Skipping this operation.\”
exit 0
fi
done
# 遍历 existing_filenames 数组中的每个元素
# 如果当前文件名 filename 与数组中的某个元素相等,则表示该文件已经处理过
# 输出提示信息并使用 exit 0 命令正常退出脚本
echo \”$filename\” >> \”$record_file\”
# 如果文件未处理过,则将其文件名追加到 record_file 文件中
tar –
评论前必须登录!
注册