在团队小的时候,运维都是后台人员兼职。没时间搞什么图片服务器啊,fastdfs啊之类的分布式存储,用七牛,阿里云oss好像又有些奢侈,这些对象存储平台按流量收费,听说有些团队的图片被恶意访问,一晚上扣流量费扣了好多钱。小企业,担不起这个风险。就用最笨的办法。服务器收到图片存储请求,就将图片存储在服务器硬盘上。然后用nginx反向代理,给一个独立域名访问。方案如下
http - > nginx -> 访问指定资源目录
个人以为,用户量不大的早期app后台或小型后台服务,可以这样处理。
但是这样处理存在一个隐患。上次腾讯云崩溃,导致用户的数据资料丢失还历历在目。所以,不怕一万,就怕万一。还是需要对传到服务器上的图片进行备份。可以备份到另外一台服务器上,当然也可以备份到本地硬盘。本文提供一种简单的服务器文件备份到本机的操作方案
服务器端 centos7
安装rsync
1、检查有没有安装rsync
没有安装则用
yum -y install rysnc
命令安装
2、安装完毕添加配置
在 /etc/rsyncd 目录下添加如下三个文件
rsyncd.conf文件内容
# Distributed under the terms of the GNU General Public License v2
# Minimal configuration file for rsync daemon
# See rsync(1) and rsyncd.conf(5) man pages for help
# This line is required by the /etc/init.d/rsyncd script
#告诉进程写到 /var/run/rsyncd.pid 文件中
pid file = /var/run/rsyncd.pid
lock file =/var/run/rsyncd.lock
#日志文件
log file =/var/log/rsyncd.log
log format = %t %a %m %f %b
syslog facility = local3
#指定运行端口,默认是873
port = 8877
#指定服务器IP地址
address = 192.168.0.199
#服务器端传输文件时,要发哪个用户和用户组来执行,默认是nobody
uid = root
gid = root
#如果"use chroot"指定为yes,那么rsync在传输文件以前首先chroot到path参数所指定的目录下。这样做的原因是实现额外的安全防护,但是缺点是需要以root权限,并且不能备份指向外部的符号连接所指向的目录文件。默认情况下chroot值为yes
use chroot = no
#客户端最多连接数
max connections = 5
motd file = /etc/rsyncd/rsyncd.motd
timeout = 300
#同步模块
[resources]
#指定文件目录所在路径
path = /home/RESOURCES
#list 意思是把rsync 服务器上提供同步数据的目录在服务器上模块是否显示列出来。默认是yes 。如果你不想列出来,就no ;如果是no是比较安全的,至少别人不知道你的服务器上提供了哪些目录。你自己知道就行了
list=yes
#指定在 rsync 服务器上运行 delete 操作时是否忽略 I/O 错误。一般来说 rsync 在出现 I/O 错误时将将跳过 –delete 操作,以防止因为暂时的资源不足或其它 I/O 错误导致的严重问题。
ignore errors
#如果为yes,表示只读本地文件就无法同步到服务器
read only = no
#允许连接的ip,在演示中使用的云服务器就直接写*,表示无限制 如果要规定ip或者ip段(10.1.4.0/255.255.255.0)需要进行其他配置
hosts allow=*
#hosts allow=10.1.4.0/255.255.255.0
#hosts deny=*
#auth users 是必须在服务器上存在的真实的系统用户,如果你想用多个用户,那就以,号隔开
auth users = root
#密码存在rsyncd.passwd文件里
secrets file = /etc/rsyncd/rsyncd.passwd
rsync.passwd 内容
指定密码。为了示范,这里搞了个最简单的国民常用密码
rsyncd.motd 内容
这个是用来设置欢迎页面
启动
rsync --daemon --config=/etc/rsyncd/rsyncd.conf
已经启动
权限设置-很重要
如果不进行权限设置,在客户端就会提示授权失败!
客户端
客户端下载cwRsync_5.4.1_x86_Free文件
解压后如下图,红色的是新增的一个password.txt
password.txt内容如下
也就是对应的centos上rsync.passwd 的内容一样
2、执行命令
rsync.exe -avzP --port=8877 --password-file=D:\Dev\Tools\cwRsync_5.4.1_x86_Free\password.txt root@192
.168.0.199::resources /cygdrive/d/data
这段命令的意思简单说下
–port=8877 #端口
root #执行数据同步的用户
192.68.0.199 #服务器地址
resources #模块名称
/cygdrive/d/data 表示本地的同步文件夹/d/data 为同步文件夹
如果指定
–delete #从cwRsync客户端D:\data目录中删除与Rsync服务端/home/test目录中不相同的数据,即保证两边的数据完全一致
运行起来,同步的效果如下
仅供各位老铁参考。等用户量大了,该花钱上OSS的,该弄图片服务器集群的还是要搞的。
2018年9月26日18:40:23
witch_soya