博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
sftp自动备份
阅读量:2217 次
发布时间:2019-05-08

本文共 2885 字,大约阅读时间需要 9 分钟。

备份方式

双重备份。即网站服务器本机备份和本地专用存储服务器备份。

传输方式

数据文件以sftp方式进行传输

  1.   优点:更安全。加密传输认证信息和传输的数据
  2.   缺点:效率低。使用了加密/解密技术,传输效率比普通的FTP要低得多。

基本安装与配置

以192.168.30.129模拟网站服务器,192.168.30.128模拟本地专用备份数据服务器。

  1.     两台服务器使用yum安装vsftpd 、ftp并开启vsftpd服务/添加iptables协议,开方21端口
  2.     对vsftpd.conf文件进行配置,如下:

[root@CentOS2 vsftpd]# vi /etc/vsftpd/vsftpd.conf

local_enable=YES

write_enable=YES

anon_upload_enable=YES

anon_mkdir_write_enable=YES

自动备份思路

 

通过本机shell脚本执行sftp下载

 

通过shell脚本自动打包压缩并备份

前面讲过备份方式为双重备份,整个备份过程全由计算机自动处理完成,无须人为干预,大大提高效率。每周五对数据进行备份,思维图如下:

思维图:

 

 

 

192.168.30.129(网站服务器)                      192.168.30.128本地备份服务器

说明:通过两个shell脚本执行自动化管理,一个在30.129上执行对备份的数据进行打包并压缩,并在本地进行数据存放。另一个在30.128上执行,通过sftp功能对30.129上打包的数据进行下载。

操作过程

(1)在30.129

我们需要备份30.129上文件目录/var/lib/mysql/ganqi_cms/以及/var/www/collect两个目录文件,其中collect目录中cache、images以及Images三个目录不需要备份。

另外,ganqi_cms目录文件不但要备份至30.128上,而且还要在本机30.129上另存一份。

编写shell脚本命名为:Auto_backup.sh

#!/bin/sh

MYDATE=`date +%F`

#将日期赋予变量MYDATE

tar -zcvf /root/mysql_bak/ganqi_cms_$MYDATE.tar.gz /var/lib/mysql/ganqi_cms/

#ganqi_cms打包压缩存入/root/mysql_bak/做本地备份

tar -zcvf /tmp/ganqi_cms_$MYDATE.tar.gz /var/lib/mysql/ganqi_cms/

#ganqi_cms放入/tmp目录下做远程下载备份

tar -zcvf /tmp/collect_$MYDATE.tar.gz --exclude=/var/www/collect/cache --exclude=/var/www/collect/images --exclude=/var/www/collect/Images /var/www/collect

#collect文件打包压缩并放入/tmp目录下做远程下载备份

对Auto_backup.sh进行权限设置,使其具有执行权限

chmod 755 /usr/local/sh/Auto_backup.sh ,运行Auto_backup.sh在/tmp下将获得以时间结尾的打包压缩文件collect和ganqi_cms文件,并且30.129上对ganqi_cms也进行了存放

 

(2)在30.128

          30.129上工作已经完成,现在需要通过sftp对其进行下载。

          1.生成密钥对,使shell脚本运行后能自动登入sftp而无须输入密码,操作如下:

在30.128上进行如下 操作

[root@CentOS1 .ssh]# ssh-keygen -t rsa

Generating public/private rsa key pair.

Enter file in which to save the key (/root/.ssh/id_rsa):      #我用空格

Enter passphrase (empty for no passphrase):                 #我用空格

Enter same passphrase again:                                      #我用空格

Your identification has been saved in /root/.ssh/id_rsa.

Your public key has been saved in /root/.ssh/id_rsa.pub.

The key fingerprint is:

76:00:40:20:72:8a:da:45:5f:1b:57:ce:d9:40:b4:35 root@CentOS1

The key's randomart image is:

+--[ RSA 2048]----+

|o oo+.. o .+= E  |

|o+ . . o + o * . |

|o   . . o   = .  |

|.. .     .       |

|. .     S .      |

|       . .       |

|                 |

|                 |

|                 |

+-----------------+

You have new mail in /var/spool/mail/root

[root@CentOS1 .ssh]# ls

id_rsa    id_rsa.pub

生成公钥id_rsa.pub和私钥id_rsa,将公钥id_rsa.pub复制到30.129目录~/..ssh下(如果没有.ssh就创建一个目录),并改名为authorized_keys  ,OK,在30.128上登入sftp即可无须输入密码。

无密码登入sftp设置好后便可创建sftp自动下载脚本Auto_sftp.sh,创建准备要存放下载的目录collect_bak 和mysql_bak如下:

#!/bin/sh

MYDATE=`date +%F`

sftp 192.168.30.129 << EOM 

get /tmp/collect_$MYDATE.tar.gz /home/collect_bak

get /tmp/ganqi_cms_$MYDATE.tar.gz /home/mysql_bak

bye 

EOM 

ok,完成

定时任务

      这是最后一步,设置定时任务crontab –e

在30.129上设定时:0 5 * * 5 /usr/local/sh/Auto_backup.sh每周五5点进行打包

在30.128上设定时:0 7 * * 5 /usr/local/sh/Auto_sftp.sh每周五7点进行下载

全部任务已经完成,可以放心的去睡觉了。在定时上30.129的时间设置要早于30.128哦!

 

补充:我们使用的ssh都是默认的端口22,如果修改过端口需在Auto_sftp.sh脚本的sftp登入中加 –oPort=端口   sftp –oPort=22004 root@192.168.30.129

转载地址:http://gayfb.baihongyu.com/

你可能感兴趣的文章
PLSQL常用方法汇总
查看>>
几个基本的 Sql Plus 命令 和 例子
查看>>
PLSQL单行函数和组函数详解
查看>>
Oracle PL/SQL语言初级教程之异常处理
查看>>
Oracle PL/SQL语言初级教程之游标
查看>>
Oracle PL/SQL语言初级教程之操作和控制语言
查看>>
Oracle PL/SQL语言初级教程之过程和函数
查看>>
Oracle PL/SQL语言初级教程之表和视图
查看>>
Oracle PL/SQL语言初级教程之完整性约束
查看>>
PL/SQL学习笔记
查看>>
如何分析SQL语句
查看>>
结构化查询语言(SQL)原理
查看>>
SQL教程之嵌套SELECT语句
查看>>
日本語の記号の読み方
查看>>
计算机英语编程中一些单词
查看>>
JavaScript 经典例子
查看>>
判断数据的JS代码
查看>>
js按键事件说明
查看>>
AJAX 初次体验!推荐刚学看这个满好的!
查看>>
AJAX 设计制作 在公司弄的 非得要做出这个养的 真晕!
查看>>