最近需要将原来使用阿里云 OSS 的程序模块改成使用公司内部搭建的文件服务器,由于目前使用的文件不多,且都是一些小文件,经过对比后,决定采用 Samba 来实现文件服务器。
Samba 是一个程序的集合,包括服务器与客户端程序,它允许在 Linux 与 Windows 实现共享文件的功能。本文先讲述如何在 CentOS 7 下安装与配置 Samba,然后讲述如何使用 Java 来实现 Samba 客户端以上传与读取文件。
Samba 安装
CentOS 平台下可以直接使用 yum 来安装 Samba 服务器以及客户端。
# yum install samba samba-client
Samba 安装好后,就可以启动操作。
# service smb start
如果需要关闭,则使用命令:
# service smb stop
如果需要查看 smb 运行状态,可以使用命令:
# service smb status
Samba 配置
安装好 Samba 后,就可以对 Samba 进行配置了。
我们先使用以下命令添加 Linux 组 leehao 和用户 leehao。
# groupadd leehao
# useradd -g leehao leehao
接下来使用smbpasswd
命令来创建 Samba 的用户:
# smbpasswd -a leehao
输入 Samba 用户 leehao 的密码。
Samba 的默认配置文件是/etc/samba/smb.conf
。打开 smb.conf 文件,添加以下配置:
[portrait]
comment = leehao portrait
path = /home/leehao/upload/portrait
valid users = @leehao
public = no
admin users = leehao
writable = yes
create mask = 0640
directory mask = 0750
配置的含义是增加一个新的 Samba 共享目录,目录位置是/home/leehao/upload/portrait
,且使用需要使用指定用户密码来访问。
在/home/leehao/
目录下创建目录upload/portrai
。
完成配置后,可以使用testparm
命令来测试 Samba 配置是否正常。
Windows 访问 Samba
Samba 配置完成后,就可以访问了,可以在 Windows 打开文件资源窗口来访问 Samba。
Windows 窗口地址栏中输入\\10.88.x.x\portrait
(改成实际 IP),按下回车,输入用户 leehao 和上面设置的密码,就可以访问 Linux 的 Samba 目录了。
如果弹出“不允许一个用户使用一个以上用户名与服务器…”提示,可以打开 cmd,输入net use * /del /y
命令,断开所有 Windows 与 Samba 的连接,再重新连接 Samba 即可。
Java 实现 Samba 客户端
我们使用 jcifs 来实现 Java 读取以及下载 Samba 文件的功能。