使用SFTP进行数据备份

背景

现有部分Windows Server上的SQL Server的数据库文件需要进行异地备份,然而备份中转机则为Linux主机,异地备份主机的防火墙设定为只接收该机的IP访问。在不修改原有的网络环境的前提下,原有的思路是在Windows上挂载NFS共享路径或者Linux远程挂载SMB共享,现利用Windows平台的开源软件FreefileSync的文件同步功能来通过SFTP服务进行文件的同步备份。

实施

服务端配置

  1. 建立用户

    1
    2
    3
    4
    # 建立用户kingdee,但不建立用户群组,设定用户不能登录系统
    useradd -d /backups/misc/kingdee -n -s /sbin/nologin kingdee
    # 修改kindee用户密码
    passwd kingdee
  2. 修改SSHD配置文件

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    # 注释掉sftp-server进程
    #Subsystem sftp /usr/libexec/openssh/sftp-server
    # 使用internal-sftp替代sftp-server
    Subsystem sftp internal-sftp
    # 增加如下设定sftp用户配置文件
    UsePAM yes
    Match user kingdee
    ForceCommand internal-sftp
    # 指定chroot目录限制用户只能访问该目录
    ChrootDirectory /backups/misc/
  3. 建立传输文件夹

    1
    2
    3
    4
    5
    # chroot目录至根目录的文件夹的宿主只能是root,否则无法登录
    # 在chroot目录下可以设置用户可读写文件夹
    mkdir -p /backups/misc/kingdee
    chown root /backups/misc
    chown kingdee /backups/misc/kingdee
  4. 配置生效

    1
    systemctl restart sshd

客户端配置

  1. 配置文件同步

    1. 安装工具软件

      1. 软件列表

        1. 7zip:7-Zip
        2. freefilesync: FreeFileSync: Open Source File Synchronization & Backup Software
      2. 安装过程

    2. 同步属性配置

      1. 源文件:使用本地文件夹

      2. 目标文件:设置在线存储

      3. 设置为镜像模式

    3. 同步文件

  2. 建立定时任务

    1. 将FreeFileSync脚本保存为批处理脚本
    2. 在定时任务中调用该脚本

验证

​ 略