原本想用SFTP来解决文件传输问题,结果还是太年轻了,SFTP这种方式完全不适合传送大体积文件,各种因素影响了传输速度,我这里通过局域网传输,只有可怜的1M左右。
放弃SFTP传输大文件的方案,还是用网络共享samba好了。
先安装samba:
yum -y install samba samba-client samba-swat
创建共享文件夹:
mkdir /data/downloads
更改共享文件夹权限为777:
chmod 777 /data/downloads
如果对权限有要求,可以使用smbpasswd -a命令添加一个用户,用户必须在系统中存在,使用setfacl添加权限即可。
配置samba.conf:
vi /etc/samba/smb.conf
修改:
[global]
workgroup = WORKGROUP #工作组的名称为WORKGROUP
server string = Samba Server Version %v
log file = /var/log/samba/log.%m
max log size = 500
security = share #share:分享的数据不需要密码
passdb backend = tdbsam
cups options = raw
security = share, user, domain:三选一,这三个设定值分别代表
share:分享的数据不需要密码,大家均可使用 (没有安全性);
user :使用 Samba服务器本身的密码数据库,密码数据库与底下的 passdb backend 有关;
domain:使用外部服务器的密码
经测试,如果security修改成share的话,smb服务无法启动,改回user可以正常启动,也就是说,共享数据不允许不需要密码。
这样的话,就需要我们添加一个用户:
groupadd guest #创建一个guest用户组
useradd -g guest guest #创建一个guest用户
usermod -G guest guest #将guest用户添加进guest用户组中
smbpasswd -a guest #将guest用户加入到smb用户里,并设置smb密码
在文件末尾添加以下内容:
[data_security]
path = /home/videos/
read only = No
writable = yes
create mode = 0770
directory mode = 0770
guest ok = no
valid user = @guest
保存退出。
设置开机启动,并运行samba服务:
systemctl enable smb systemctl enable nmb systemctl start smb systemctl start nmb
查看smb和nmb占用的端口信息:
netstat -tunlp | grep mb
如果有运行防火墙的话需要开放139和445端口:
firewall-cmd --zone=public --add-port=139/tcp --permanent firewall-cmd --zone=public --add-port=445/tcp --permanent
最后刷新重载一下防火墙:
firewall-cmd --reload 或者 service firewalld restart
配置好之后,windows就能通过网络共享访问服务器了。
折腾之后发现,还是用SFTP比较好。
用FlieZilla连接SFTP传输速度可以达到17M左右,差不多了。