云计算百科
云计算领域专业知识百科平台

跨服务器同步数据库tar包数据

跨服务器同步数据库tar包数据

简介:将FTP/SFTP服务器上的数据库tar包数据周期同步到对应数据库中。

一、数据同步

(一)查找最新tar包并进行解压缩及同步到指定服务器 scpDmp.sh

  • 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

    赞(0)
    未经允许不得转载:网硕互联帮助中心 » 跨服务器同步数据库tar包数据
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!