需求场景: 将云上一台Linux服务器文件备份到本地服务器,一周一备即可。

面对这样一个需求,我们可能面临下列几个问题,

备份方式:是云服务器推文件到本地服务器写入,还是本地服务器从云服务器拉文件?这个问题涉及就是谁作为服务端,服务端需映射公网服务端口,客户端则不需要。这里我们将云服务器作为服务端,同时设置白名单只允许本地服务器出口IP才允许访问。

技术实现:如何从一台服务器自动备份到另一台服务器呢?哪一个技术方案相对更安全可靠?

这里涉及的是文件备份,且实时性要求不高,最简单的方式就是人工备份,由相关管理人员通过主动的方式手工备份文件到本地服务器。但这是懒人的时代,机器能做的,干嘛用手来呢,我们来一起看看自动备份方案。

方案一:FTP

说起文件传输备份,首先想到就是FTP,FTP是用于网络上进行文件传输的一套标准协议,但使它声名狼藉的问题是它以明文方式传输密码和文件内容,只要在网络中对FTP连接进行监控就能被窃取。

FTP协议存在一些难以改善的缺点,它将走向终点。很显然,这并不是一个好的技术方案。

方案二:SFTP

SFTP协议是在FTP的基础上对数据进行加密,使得传输的数据相对来说更安全。但是这种安全是以牺牲效率为代价的,也就是说SFTP的传输效率比FTP要低。不过现实使用中,文件量并没有那么大,这种差别并不明显。

实施方案:

云服务器作为服务端开启SFTP,提供连接地址、用户名、密码,白名单限制访问来源IP。

客户端可根据操作系统类型,采用不同的技术措施定期下载备份。

A、下载到Window服务器:

定时任务+WinSCP

winscp.exe /console /command "option batch continue" "option confirm off" "open sftp://username:password@192.168.204.130:22" "option transfer binary" "get /tmp D:\data\" "exit" /log=log_file.txt

B、下载到Linux服务器:

crontab+lftp

lftp -u username,password sftp://192.168.204.130 << EOF cd /tmp mget *.* bye EOF

方案三:rsync

rsync是linux系统下的数据镜像备份工具,rsync的增量传输功能,十分强大。

假设待传输文件为A,如果目标路径下没有文件A,则rsync会直接传输文件A,如果目标路径下已存在文件A,则发送端视情况决定是否要传输文件A。rsync默认使用"quick check"算法,它会比较源文件和目标文件(如果存在)的文件大小和修改时间mtime,如果两端文件的大小或mtime不同,则发送端会传输该文件,否则将忽略该文件。

实施方案:

1、云服务器搭建rsync服务端,设置账户密码,白名单限制访问来源IP。

2、本地服务器安装rsync客户端,编写shell脚本,结合crontab实现定时增量备份。

rsync -avz --password-file=/root/passwd root@192.168.204.130::common /tmp >/dev/null 2>&1

以上,借助于一些常用的运维工具,来构建的解决方案,可以满足这个需求场景下的文件自动备份需求。

最新文章

  1. HDU1671 字典树
  2. Arcgis for Javascript 在VS2012中的智能提示
  3. 夺命雷公狗---Thinkphp----14之前台的首页完善
  4. Linux下DNS服务器的基本搭建
  5. Hibernate配置文件hbm主键的generator可选项
  6. python20151130
  7. ☀【JS】Code
  8. php视图操作
  9. 优化算法-BFGS
  10. sim808模块收发送短信
  11. Spring中各jar包的作用
  12. oracle运行速度与效率高的秘密
  13. 在iview的Table中添加Select(render)
  14. JDK 8 之 Stream sorted() 示例
  15. git第三节----git status与git diff
  16. Java简单操作Zookeeper
  17. C\C++学习笔记 3
  18. Excel技巧--单列变多行
  19. 黄聪:TortoiseGit(乌龟git)保存用户名密码的方法
  20. Spring STS Call Hierarchy 查找不到被调用的信息

热门文章

  1. SpringBoot结合策略模式实战套路
  2. android studio学习----android studio断点调试
  3. iOS开发 简单实现视频音频的边下边播 (转)
  4. 高性能TcpServer(C#)&#160;-&#160;5.客户端管理
  5. HeadFirst设计模式--命令模式
  6. Django 使用 cookie 实现简单的用户管理
  7. SHELL脚本和常用命令
  8. pikachu SQL-Injection
  9. day32_8_14 并发编程三 线程的GIL
  10. 03-cmake语法-变量,字符串