rsync自动输入密码实现数据备份
最近有点背,在64位suse上大家django环境出了一堆问题,最后服务器还不稳定不能用……
由于做不了webserver,所以只能用来做备份服务器了,需求比较简单,就是将源服务器的一个目录每天copy过来做备份。其实就是用rsync或者scp即可,最后的问题就变成了怎么让rsync自动输入服务器密码,结果在网上搜了一下方法,有rsyncserver,公秘钥,之类,杯具的是我配置了一下午也没搞定……
然后想起公司有同事之前做过一个自动登录服务器的脚本,是不是只要改一下执行的命令即可呢?修改后的代码如下:
#!/usr/bin/expect -f
#auto ssh login
proc wait {} {
expect {
"*asswor*" {
send not!@#rated\n
expect {
"*asswor*" {
puts stderr "Unknown password."
exit 1
}
"$*" { }
">*" { }
"#*" { }
}
}
"$*" { }
">*" { }
"#*" { }
}
}
if {[llength $argv] < 1} {
puts "Usage: [exec basename $argv0] Host."
exit 1
}
set timeout 30
set dir [lindex $argv 0]
set passwd "dantezhu"
#exp_internal 1
spawn mkdir -p /data/mman_backup/$dir
spawn [exec which rsync] dantezhu@10.6.207.84#36000:/home/dantezhu/release/dgwww/upload /data/mman_backup/$dir -ar --progress
expect {
"*asswor*" {
send "dantezhu\n"
wait
}
"*no)?*" {
send "yes\n";
expect {
"*assword*" {
send "$passwd\n"
wait
}
}
}
timeout {
puts "Timeout!"
exit 1
}
}
interact
由于是在不知道怎么在这个脚本里面获取当前的年月日,所以又在外面写了一层python(表BS我……)
#!/usr/bin/python
# -*- coding: utf-8 -*-
import time
import os
timeHere = time.strftime('%m/%d',time.localtime())
cmd = '/home/dantezhu/py_backup/backup_data '+ timeHere
os.system(cmd)
测了一下,一切正常,然后在crontab中加入定时脚本,让它每天0点半执行:
30 0 * * * python /home/dantezhu/py_backup/rsync_backup.py >> /data/mman_backup/backup.log 2>&1 &
附:代码下载
建议继续学习:
- rsync同步的艺术 (阅读:9068)
- Linux探索:一次删除一百万个文件的最快方法 (阅读:6484)
- 仅仅只备份是不够的 (阅读:5461)
- rsync 的核心算法 (阅读:5136)
- Dropbox差异同步算法rsync及其改进算法原理 (阅读:4840)
- 使用scp在windows和Linux之间互传文件 (阅读:4856)
- rman备份对各种数据块操作 (阅读:4145)
- puppet使用rsync来同步文件教程 (阅读:3827)
- mydumper的使用和源代码分析 (阅读:3719)
- MySQL 备份和其恢复机制原理简述 (阅读:3737)
扫一扫订阅我的微信号:IT技术博客大学习
- 作者:Dante 来源: Vimer
- 标签: rsync 备份
- 发布时间:2010-07-15 08:46:24
-
[938] WordPress插件开发 -- 在插件使用 -
[119] 解决 nginx 反向代理网页首尾出现神秘字 -
[51] 如何保证一个程序在单台服务器上只有唯一实例( -
[50] ps 命令常见用法 -
[49] 用 Jquery 模拟 select -
[49] 整理了一份招PHP高级工程师的面试题 -
[49] 海量小文件存储 -
[48] find命令的一点注意事项 -
[48] Innodb分表太多或者表分区太多,会导致内 -
[47] 全站换域名时利用nginx和javascri
