欢迎观临
路漫漫其修远兮,吾将上下而求索

自动备份远程文件到本地

  1. 自动登录远程机器,自动输入密码和yes/no等,可以利用expect,需要先安装。

  2. 自动备份远程机器上的文件(remote_bak.sh):

    #! /usr/bin/expect
    set timeout 3600
    set password yourpassword
    spawn scp -r remote_host:/path/to/files  /local/path/to/remote_baks/
    expect {
    "(yes/no)?" {
    send "yes\n"
    expect "*assword:" { send "$password\n"}
    }
    "*assword:" {
    send "$password\n"
    }
    }
    expect "100%"
    expect eof
  3. 自动备份远程机器数据库到本地:

    #/usr/bin/bash
    CMD_PROMPT=".+@.+:.+#"
    user=root
    host=hw
    password=pwd
    database=db
    expect <<EOF
    set timeout 3600
    spawn ssh $user@$host
    expect {
        "yes/no" { send "yes\n";exp_continue }
        "*password:" { send "$password\n" }
    }
    expect -re $CMD_PROMPT { send "sudo mysqldump  ${database} > ${database}_temp.sql\n" }
    expect -re $CMD_PROMPT { send "exit\n" }
    expect eof
    EOF
    mkdir mysqlbak
    expect <<EOF
    spawn scp $user@$host:~/${database}_temp.sql mysqlbak/
    expect {
        "yes/no" { send "yes\n";exp_continue }
        "*password:" { send "$password\n" }
    }
    expect eof
    EOF
  4. 创建crontab

    #早上5点执行脚本
    crontab -e
    0 5 * * * /absolute/path/to/remote_bak.sh > /dev/null 2>&1 &

大功告成!

赞(0) 打赏
未经允许不得转载:云海鹰影博客 » 自动备份远程文件到本地
分享到: 更多 (0)

欢迎留言 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏