将linux文件同步至windows下实现自动备份
对站长来说,丢失数据又没得恢复绝对是恶梦……因此,想到将linux下的数据库和www目录自动备份,因为有win主机闲置,那就存它那了。闲话少说,现在开工:
首先给win主机安装cwrsync server端(基于cygwin和rsync的同步软件),server端含cygwin的一些工具,主要是一些linux的基本命令工具
cwrsync官方页
win软件安装没啥好说,值得提的是配置文件,在安装目录下有rsyncd.conf编辑它,这里举例说明
uid = nobody gid = nobody use chroot = false strict modes = false hosts allow = * log file = rsyncd.log #LOG日志 pid file = rsyncd.pid #进程pid secrets file = password#授权的用户密码文件格式如 username:password # Module definitions # Remember cygwin naming conventions : c:\work becomes /cygwin/c/work #上面意思是cygin使用的路径规则 [backup]#域 path = /cygdrive/f/backup#域主目录 read only = false list = false auth users = langzi transfer logging = false
接下来就可以在linux下使用rsync连到这台win主机了
rsync /data/backup/db/* langzi@60.*.*.*::backup/db/ –password-file=/tmp/pass
还有两段备份代码,也送给有缘人了^_^
'www.phpman.com.cn/htdocs', 'www.e579.net' =>'www.e579.net/htdocs' ); define('DS',DIRECTORY_SEPARATOR); define('MAXSIZE',1024*1024*200); foreach($subdirs as $k=>$v){ backup($k,$wwwroot.$v); } /** * 备份目录 * * @return void * @author phpman **/ function backup($name,$dir) { global $backup_dir; file_exists($backup_dir) or mkdir($backup_dir); if(file_exists($dir) && file_exists($backup_dir)){ $cmd = sprintf("du -csb %s|awk '/total$/{print $1}'",$dir); $total = exec($cmd); if($total >MAXSIZE){ return false; }else{ chdir($dir); $cmd = sprintf("ls -l %s|awk '\$NF~/^%s\.[0-9]+\.tar\.gz$/{print \$NF}'",$backup_dir,preg_quote($name),date('Ymd')); $oldfile = exec($cmd); $newfile = sprintf("%s.%s.tar.gz",$name,date('Ymd')); if($oldfile != $newfile){ $cmd = sprintf("tar czf %s%s *",$backup_dir,$newfile); system($cmd,$error); chdir($backup_dir); if($error === 0) file_exists($oldfile)&&unlink($oldfile); } } } } ?>
数据要好好的保存啊,不要搞丢了哟