linux文件共享服务方案
简单的个人http服务共享文件
nohup python3 -m http.server > /dev/null &
nohup python -m SimpleHTTPServer > /dev/null & #python2版本
httpi访问ip+port即可
简单的个人文件协议服务vsftpd
ftp:File Transfer Protocol
思路:yum安装服务端vsftpd,配置安全功能,根目录,进制切换服务端目录,写权限等;客户端安装ftp即可访问。访问方式 ftp ip,使用get put ?
服务端vsftpd
yum install vsftpd -y
准备2个用户测试ftp使用linux的非root用户信息
useradd vsftpd1 && echo ‘1’ | passwd --stdin vsftpd1; #
useradd vsftpd2 && echo ‘1’ | passwd --stdin vsftpd2
修改配置关闭不安全匿名功能
sed -i ‘/^anonymous_enable=YES/s/YES/NO/’ /etc/vsftpd/vsftpd.conf #取消匿名访问公共空间
grep ‘^anonymous’ /etc/vsftpd/vsftpd.conf #验证
修改其他配置依次如下共享目录位置,其他目录权限,写权限
sed -i ‘$a local_root=/data/\nchroot_local_user=YES\nallow_writeable_chroot=YES’ /etc/vsftpd/vsftpd.conf
#【坑】目录不要反正root中,且归普通用户所属 chown vsftpd1.vsftpd1 /data/
tail -4 /etc/vsftpd/vsftpd.conf #验证
systemctl restart vsftpd #更新配置
客户端ftp
linux客户端下载ftp测试即可;win客户端访问ftp://10.0.0.10/,cmd自带ftp功能
yum install ftp -y
samba 企业部门跨系统共享文件服务,打印服务
【坑】期间遇到网络dns解析错误且无法ping通重启network服务ok
【坑】期间更新yum源网络终端,导致后续包找不到重新下载配置yum源ok
思路:服务端安装配置,添加认证数据库信息 服务端安装工具访问
服务端 samba
yum install samba -y
准备测试目录授权,给创建的用户
useradd samba1 && echo 1 | passwd --stdin samba1
useradd samba2 && echo 1 | passwd --stdin samba2
mkdir /samba_share/
chown samba1.samba1 /samba_share/
touch /samba_share/test.png
修改samba的软件配置文件
find /etc/samba -name ‘*.conf’
修改 /etc/samba/smb.conf
依次配置功能为说明,共享目录,访客公共写权限
sed -i ‘$a [samba_share]\n\tcomment=myself share dir\n\tpath =/samba_share/\n\tguest ok=no\n\tpublic = no\n\twritable = yes’ /etc/samba/smb.conf
tail -6 /etc/samba/smb.conf #验证
head -n -6 /etc/samba/smb.conf > samba.conf && mv -f samba.conf /etc/samba/smb.conf #如编辑错误,此命令技巧删除后6行
pdbedit samba用户信息认证工具,添加系统用户
pdbedit -a -u samba1 #设置samba所认证独立密码
pdbedit -a -u samba2
启动samba服务
/my_smb]#systemctl start smb #systemctl list-units;/usr/lib/systemd/system/smb.service
验证进程、端口
netstat -tunlp|grep smb
ps -ef|grep smb
客户端 samba-client
yum install samba-client -y
请求方式
smbclient //10.0.0.10/samba_share -U samba01
使用方式 ?
windows访问
\10.0.0.10\samba_share\
rsync服务器之间备份服务
当系统工具基本使用 备份,限速,无差异化,排除目录
yum install rsync -y
@主机名通信,功能性替代cp,scp
rsync 参数 user@ip:源路径 目标路径
#:这样不使用rsync协议,使用ssh协议传输,scp /data root@172.16.1.10:/tmp/
无差异同化同步拷贝
谨慎使用–delete参数 将目标目录的数据清空,保证完全和源目录的数据一致
rsync -azvP --delete /test1/ /test2/ #ps:test1/目录下文件 tset1目录本身 P:显示传输进度并支持续传
rsync支持增量备份,增量原理是比较元数据而判断是否进行操作 远程备份文件,且改名
rsync -avzP /var/log/ /tmp/
rsync -avzP /tmp/data.log root@172.16.1.41:/opt/5G.log.bak
rsync -avzP --exclude=private --exclude=.* /dev/ root@rsync-17:/ops/ #排除隐私
场景 对rsync限速 ps: --bwlimit 单位KB/s
从零设备生成一个5G文件
dd bs=100M count=50 if=/dev/zero of=/var/log/mydata.log
rsync -avzP --bwlimit=20000 /var/log/mydata.log /opt
iotop #查看磁盘的读写IO情况
【坑】因为rsync在传输数据时,会占用大量的磁盘IO,如果是网络传输的话,带宽占满,影响其他服务进程
rsync作为服务模式基本实践
语法
rsync 参数 源路径 user@ip::目标路径 #push推送
rsync 参数 user@ip::源路径 目标路径 #pull拉取
服务端 rsync
yum install rsync -y
在配置文件中体现,无需root权限验证登录,而是rsync生成的虚拟用户认证,可以限速。默认端口873
准备测试虚拟认证用户,密码:添加权限600,模块路径并授权给,创建的守护进程用户
cd /; mkdir data{1…3}
useradd -u 1002 -M -s /sbin/nologin rdaemon
chown -R rdaemon.rdaemon data{1…3}
ll -d data{1…3}
echo ‘rayuth:1’ > /etc/rsync.passwd;
chmod 600 /etc/rsync.passwd;
ll /etc/rsync.passwd
修改配置文件功能
cat > /etc/rsyncd.conf << ‘EOF’
uid = rdaemon
gid = rdaemon
port = 666
fake super = yes
use chroot = no
max connections = 200
timeout = 600
ignore errors
read only = false
list = false
auth users =rauth
secrets file = /etc/rsync.passwd
log file = /var/log/rsyncd.log
#####################################
[web13_backup]
comment = none
path = /data1
[web14_backup]
comment = none
path = /data2
[web15_backup]
comment = none
path = /data3
EOF
systemctl status rsyncd
systemctl start rsyncd
客户端 rsync
配置文件中虚拟用户认证
yum -y install rsync &&systemctl start rsyncd
export RSYNC_PASSWORD=‘1’
rsync -avzP --port=666 rauth@10.0.0.99::web13_backup/file.log a.log
或密码文件权限600
unset RSYNC_PASSWORD
echo 1 > /etc/my_rsync.passwd
rsync -avzP --password-file=/etc/my_rsync.passwd --port=666 test.png rauth@10.0.0.99::web13_backup/
需求场景:每日同步打包var/log和其md5文件到到服务端。服务端验证验证并返送结果到邮箱
客户端bash
vim /bash/sync_client.sh
#!/bin/bash
yum -y install rsync
#【坑】tar: Removing leading `/’ from member names
cd /
tar -zcf /data1/KaTeX parse error: Expected group after '_' at position 11: (hostname)_̲(ifconfig eth0|awk ’ NR2 {print KaTeX parse error: Expected 'EOF', got '}' at position 2: 2}̲')_(date “+%F_%H”).tgz var/log etc
md5sum /data1/KaTeX parse error: Expected group after '_' at position 11: (hostname)_̲(ifconfig eth0|awk ’ NR2 {print KaTeX parse error: Expected 'EOF', got '}' at position 2: 2}̲')_(date “+%F_%H”).tgz > /data1/md5
export RSYNC_PASSWORD=1 若指定密码文件将密码输入文件
rsync -az --port=666 /data1/ rauth@10.0.0.99::web13_backup
服务端bash
vim /bash/sync_server.sh
#mailx用法,mail -s “邮件主题” 邮箱@地址 < file #自己发给自己
#!/bin/bash
if ! command -v mailx &> /dev/null; then
#【坑】系统md5sum校验路径不同No such file or directory
#【坑】smtp-server: 535 Login Fail 邮箱用户名或者授权码错误
yum install mailx -y
if [$? eq 0 ] ;then
echo “mailx 安装成功”
else exit 1
fi
fi
#‘EOF’ 不解析变量
cat > /etc/mail.rc << ‘EOF’
set from=tencent@qq.com
set smtp=smtps://smtp.qq.com:465
set smtp-auth-user=tencent@qq.com
set smtp-auth-password=mifsvfxsqowgiiag
set smtp-auth=login
set ssl-verify=ignore
set nss-config-dir=/etc/pki/nssdb/
EOF
md5sum -c /data1/md5 | mail -s exc-rsync t@qq.com >> /dev/null 2>&1
find /data1 -type f -mtime +7 -delete
放入定时任务
bash -x my_rsync.sh #放入定时任务前验证调试脚本
#cront -e; 0 0 * * * /usr/bin/bash /bash/sync_client.sh > /dev/null 2>&1
nfs企业生成集群挂载形式共享文件系统服务
nfs基于tcp/udp网络的rpc通信协议体现在端口随机告知rpcbind服务,双端对接rpc连接请求告知,服务端rps.nfsd验证通行并建立nfs会话,并进行远程过程调用即节点文件系统的控制
验证方式
单个内网IP或内网网段主机
准备服务端nfs-16 客户端web-13,web-14,web=15
服务端 rpcbind nfs-utils o:rpcbind.socket 核心词:配置文件,映射或权限控制
yum install nfs-utils rpcbind -y
mkdir /nfs-web-13
useradd nndeamon -u 1003 -M -s /sbin/nologin
chown nndeamon.nndeamon /nfs-web-13
配置文件exports
示例:shared_dir 172.16.1.0/24(ro,sync,no_root_squash) #* no_root_squash 保留root完全权限不安全
示例:shared_dir 172.16.1.13(rw,async,root_squash) #root_squash root权限映射为NFS服务端的匿名普通用户处理,同all_squash系统文件主组变nfsnobody;async先内存缓存再写入硬盘数据可能会丢
ningx运行实例需要目录资源目录权限实例场景:shared_dir 172.16.1.0/24(rw,sync,anonuid=id号,anongid=id) #* nfs共享目录下的所有用户操作,统一限定为nfs客户端某个指定的用户。
NFS服务器和客户端上都创建相同的用户和组可以避免由于权限问题且无需映射成nfsnobody
vim /etc/exports
/nfs-web-13 172.16.1.10(rw,sync,anonuid=1003,anongid=1003) 172.16.1.13(rw,sync,anonuid=1003,anongid=1003)
若指定映射默认用户/nfs-web-13 172.16.1.0/24(rw,sync,all_squash) #all_squash等同映射默认用户anonuid=nfsnobody,anongid=nfsnobody)
服务端服务启动
1.systemctl start rpcbind.socket 一般开启nfs服务自启
2.systemctl start rpcbind 一般开启nfs服务自启
3.systemctl start nfs # 顺序如上根据依赖关系3->2->1关闭
客户端 rpcbind nfs-tils依赖 o:nginx o:rpcbind.socket/usr/lib/systemd/system 核心词:nginx守护进行和nfs系统且只是使用权限同一
yum -y install rpcbind
yum -y install nginx
useradd nndeamon -u 1003 -M -s /sbin/nologin
chown nndeamon.nndeamon /usr/share/nginx/html #rpm -ql
sed -i ‘/user nginx;/c user nndeamon;’ /etc/nginx/nginx.conf
sed -n ‘/user nndeamon;/p’ /etc/nginx/nginx.conf
客户端服务启动测试
systemctl start nginx rpcbind
mount -t nfs 172.16.1.99:/nfs-web-13 /usr/share/nginx/html
showmount -e 127.0.0.1 #查看共享文件系统
【坑】mount: wrong fs type, bad option, bad superblock on 172.16.1.99:/nfs-web-13客户端需要安装nfs-utils但是无需运行。
df -h | grep nginx
echo “this a image process” /usr/share/nginx/html/index.html
http访问nginx即可
tips:systemctl reload nfs 重载配置文件exports;umount /usr/share/nginx/html 取消挂载
umount -fl /usr/share/nginx/html#服务异常时强制取消挂载恢复相关本地服务 /etc/passwd修改用户登录配置 etc/sudoers提取配置文件
其他说明
查看运行中的服务#systemctl list-units |grep nfs
proc-fs-nfsd.mount loaded active mounted NFSD configuration filesystem
var-lib-nfs-rpc_pipefs.mount loaded active mounted RPC Pipe File System
nfs-idmapd.service loaded active running NFSv4 ID-name mapping service
nfs-mountd.service loaded active running NFS Mount Daemon
nfs-server.service loaded active exited NFS server and services
nfs-client.target loaded active active NFS client service