折纸效果网站,济南全网营销型网站建设,WordPress主题VR插件,wordpress加引导页Linux 网络文件共享介绍 一.常见的存储类型
目前常见的存储类型有 DAS,NAS,SAN 等#xff0c;最主要的区别是硬盘存储媒介是如何 于处理器连接的#xff0c;以及处理器使用何种方式来访问磁盘#xff0c;以及访问磁盘使用 的协议(网络协议、I/O 协议)。 三种存储类型如下 直… Linux 网络文件共享介绍 一.常见的存储类型
目前常见的存储类型有 DAS,NAS,SAN 等最主要的区别是硬盘存储媒介是如何 于处理器连接的以及处理器使用何种方式来访问磁盘以及访问磁盘使用 的协议(网络协议、I/O 协议)。 三种存储类型如下 直连式存储Direct-Attached Storage简称 DAS 网络附加存储Network-Attached Storage简称 NAS 存储区域网络Storage Area Network简称 SAN 1.1 DAS 类型的存储
DAS 存储是最常见的一种存储方式尤其是在中小企业应用中。PC 中的硬盘或只 有一个外部 SCSI 接口的 JBOD 都属于 DAS 架构。DAS 是指存储设备直接连接到 服务器总线上存储设备只与一台独立的主机连接其他主机不能使用这个存储 设备。DAS 存储设备与服务器主机之间的连接通道通常采用 SCSI 连接DAS 存储 设备主要是磁盘阵列(RAID: Redundant Arrays of Independent Disks)、磁盘簇 (JBOD:Just a Bunch Of Disks)等。
1.2 NAS 类型的存储
NAS 存储就是存储设备通过标准的网络拓扑结构(比如以太网)添加到一群计算 机上。与 DAS 以及 SAN 不同NAS 是文件级的存储方法。采用 NAS 较多的 功能是用来进行文件共享。NAS 存储也通常被称为附加存储顾名思义就是存储设备通过标准的网络拓 扑结构(例如以太网)添加到一群计算机上。NAS 是文件级的存储方法它的重 点在于帮助工作组和部门级机构解决迅速增加存储容量的需求。如今更多的人 们采用 NAS 较多的功能是用来文档共享、图片共享、电影共享等等而且随着 云计算的发展一些 NAS 厂商也推出了云存储功能大大方便了企业和人们等 个人用户的使用。NAS 产品是真正即插即用的产品。NAS 设备一般支持多计算机平台用户通过 网络支持协议可进入相同的文档因而 NAS 设备无需改造即可用于混合 Unix/Windows NT 局域网内同时 NAS 的应用非常灵活。但 NAS 有一个关 键性问题即备份过程中的带宽消耗。与将备份数据流从 LAN 中转移出去的 存储区域网SAN不同NAS 仍使用网络进行备份和恢复。NAS 的一个缺点 是它将存储事务由并行 SCSI 连接转移到了网络上。这就是说 LAN 除了必须 处理正常的最终用户传输流外还必须处理包括备份操作的存储磁盘请求。
1.3 SAN 类型的存储 存储区域网络这个是通过光纤通道或以太网交换机连接存储阵列和服务器主机 最后成为一个专用的存储网络。SAN 经过十多年历史的发展已经相当成熟成 为业界的事实标准但各个厂商的光纤交换技术不完全相同其服务器和 SAN 存储有兼容性的要求。 SAN 提供了一种与现有 LAN 连接的简易方法并且通过同一物理通道支持广 泛使用的 SCSI 和 IP 协议。SAN 不受现今主流的、基于 SCSI 存储结构的 布局限制。特别重要的是随着存储容量的爆炸性增长SAN 允许企业独立地增 加它们的存储容量。SAN 的结构允许任何服务器连接到任何存储阵列这样不管 数据置放在那里服务器都可直接存取所需的数据。因为采用了光纤接口SAN 还具有更高的带宽。 如今的 SAN 解决方案通常会采取以下两种形式光纤信道以及 iSCSI 或者基于 IP 的 SAN也就是 FC SAN 和 IP SAN。光纤信道是 SAN 解决方案中大家最熟 悉的类型但是最近一段时间以来基于 iSCSI 的 SAN 解决方案开始大量出 现在市场上与光纤通道技术相比较而言这种技术具有良好的性能而且价格低 廉。 SAN 的优势 随着存储容量的增长SAN 允许企业独立地增加他们的存储容量。SAN 允许任 何服务器连接到任何存储阵列好处是不管数据放在哪里服务器都可以直接 存取所需的数据 由于使用光纤接口SAN 具有更高的带宽。除了 FC 连接SAN 连接还有 ISCSISCSI over IP以及 SASSerial Attached SCSI接口。 光纤接口可以提供 10 公里那么长那么远的连接长度非常容易实现物理分离的存储 1.4 三种存储类型的比较
技术上
处理器----存储 连接类型有无网络媒介I/O 协议带宽是否容量共享是否数据共享DASNO使用并行 SCSI光纤通道SCSI40MBps-160MBps取决于媒介手动配置默认不共享NOSNAYES最常用光纤网络后来也可基于以太网SCSI100MBps or 200MBpsYES数据共享需要特定软件配合如 SANergyNASYES以太网NFS,CIFS10Mbps–1GbpsYESYES
优缺点和使用场景 三种存储架构的应用场景 DAS 虽然比较古老了但是还是很适用于那些数据量不大对磁盘访问速度要求 较高的中小企业 NAS 多适用于文件服务器用来存储非结构化数据虽然受限于以太网的速度 但是部署灵活成本低 SAN 则适用于大型应用或数据库系统缺点是成本高、较为复杂 二.文件传输协议 FTP
2.1 FTP 工作原理
File Transfer Protocol(FTP):文件传输协议是用于在计算机网络上的客户机和服务器 之间传输文件的标准应用层协议。FTP 是基于客户端/服务器模型(C/S)并且使用不同的连 接来工作将控制和数据传输分开控制通道使用 TCP/21 端口数据通道端口视情况而定。
FTP 用户可以使用明文登录协议进行身份验证通常是用户名和密码的形式但如果服务器配 置允许则可以匿名连接(此时连接的用户名为 ftp 或者 anonymous)。对于保护用户名和密 码并对内容进行加密的安全传输FTP 通常使用 SSL/TLS (FTPS)或 SSH 文件传输协议 (SFTP)进行保护。
第一个 FTP 客户端应用程序是在操作系统具有图形用户界面之前开发的命令行程序并且到 目前仍然随大多数 Windows、Unix 和 Linux 操作系统一起提供。此后许多 FTP 客户端 和自动化实用程序被开发用于桌面、服务器和移动设备。 FTP 工作时使用两种模式从服务器角度来说 主动模式(PORT style): 服务器主动连接客户端 控制通道客户端随机 port — 服务器21/tcp 数据通道客户端随机 port —服务器20/tcp 被动模式(PASV style): 客户端主动连接服务器 控制通道客户端随机 port — 服务器21/tcp 数据通道客户端随机 port — 服务器随机 port /tcp 例如服务器被动模式数据端口 227 Entering Passive Mode (172,16,0,1,224,59)客服端主动连接服务器 可以在客户端看到该消息服务器数据端口计算224*25659 FTP 服务状态码 1XX信息 125数据连接打开 2XX成功类状态 200命令 OK 230登录成功 3XX补充类 331用户名 OK 4XX客户端错误 425不能打开数据连接 5XX服务器错误 530不能登录 用户认证 匿名用户ftp,anonymous,对应 Linux 用户 ftp 系统用户Linux 用户,用户/etc/passwd,密码/etc/shadow 虚拟用户特定服务的专用用户独立的用户/密码文件 2.2 常见的 FTP 软件 常见的 FTP 服务端软件 Wu-ftpd,Proftpd,Pureftpd Filezilla Server,Serv-U,Wing FTP Server,IIS vsftpdVery Secure FTP DaemonCentOS 默认 FTP 服务器高速稳定下载速度是 WU-FTP 的两倍据 ftp.redhat.com 提供的数据:FTP 单机最多可支持 15000 个并发连接。 常见的 FTP 客户端软件 ftp ftp -A ftpserver port -A 主动模式 –p 被动模式 lftp lftp –u username ftpserver lftp usernameftpserver lftpget lftpget ftp://ftpserver/pub/file gftpGUI centos5 最新版 2.0.19 (11/30/2008) wget curl filezillaFTP RushCuteFtpFlashFXPLeapFtp 2.2.1 vsftpd 软件
vsftpd 由 vsftpd 包提供不由 xinetd 管理 用户认证配置文件/etc/pam.d/vsftpd
服务启动文件
/usr/lib/systemd/system/vsftpd.service /etc/rc.d/init.d/vsftpd
配置文件
/etc/vsftpd/vsftpd.conf 帮助man 5 vsftpd.conf 配置文件格式 optionvalue 等号两端不能有空格 用户和其共享目录 匿名用户映射为系统用户 ftp 共享文件位置/var/ftp 系统用户共享文件位置用户家目录 虚拟用户共享文件位置为其映射的系统用户的家目录
2.2.2 vsftpd 服务常见配置
2.2.2.1 命令端口配置
listen_port212.2.2.2 主动模式端口
connect_from_port_20YES 主动模式端口为20ftp_data_port20 默认 指定主动模式的端口2.2.2.3 被动模式端口范围
linux 客户端默认使用被动模式 windows 客户端默认使用主动模式
pasv_min_port6000 0为随机分配
pasv_max_port60102.2.2.4 使用当地时间
use_localtimeYES 默认为NOGMT时区2.2.2.5 使用匿名用户登录
anonymous_enableYES 支持匿名用户
no_anon_passwordYES 匿名用户略过口令检查 , 默认NO2.2.2.6 允许匿名上传文件
anon_upload_enableYES 匿名上传注意:文件系统权限
anon_mkdir_write_enableYES 匿名建目录
anon_world_readable_only 只能下载全部读的文件, 默认YES
anon_umask0333 指定匿名上传文件的umask默认077
anon_other_write_enableYES 可删除和修改上传的文件, 默认NO2.2.2.7 指定匿名用户的上传文件的默认的所有者和权限
chown_uploadsYES 默认NO
chown_usernamewang
chown_upload_mode06442.2.2.8 Linux 系统用户
local_enableYES 是否允许 linux 用户登录
write_enableYES 允许 linux 用户上传文件
local_umask022 指定系统用户上传文件的默认权限2.2.2.9 将系统用户映射为指定的 guest 用户
guest_enableYES 所有系统用户都映射成 guest 用户
guest_usernameftp 配合上面选项才生效指定 guest 用户
local_root/ftproot guest 用户登录所在目录2.2.2.10 限定系统用户在指定目录
禁锢所有系统在家目录中
chroot_local_userYES 禁锢系统用户默认NO即不禁锢禁锢或不禁锢特定的系统用户在家目录中与上面设置功能相反
chroot_list_enableYES
chroot_list_file/etc/vsftpd/chroot_list当 chroot_local_userYES 时则 chroot_list 中用户不禁锢 当 chroot_local_userNO 时则 chroot_list 中用户禁锢
2.2.2.11 启用日志
wu-ftp日志默认启用
xferlog_enableYES 启用记录上传下载日志此为默认值
xferlog_std_formatYES 使用wu-ftp日志格式此为默认值
xferlog_file/var/log/xferlog 可自动生成 此为默认值vsftpd日志默认不启用
dual_log_enableYES 使用vsftpd日志格式默认不启用
vsftpd_log_file/var/log/vsftpd.log 可自动生成 此为默认值2.2.2.12 启用提示信息
登录提示信息
ftpd_bannerwelcome to mage ftp server
banner_file/etc/vsftpd/ftpbanner.txt目录访问提示信息
dirmessage_enableYES 此为默认值
message_file.message 信息存放在指定目录下.message 此为默认值2.2.2.13 PAM 模块实现用户访问控制
pam_service_namevsftpd pam配置文件:/etc/pam.d/vsftpd
/etc/vsftpd/ftpusers 默认文件中用户拒绝登录2.2.2.14 是否启用控制用户登录的列表文件
userlist_enableYES 此为默认值
userlist_denyYES(默认值) 黑名单,不提示口令NO为白名单
userlist_file/etc/vsftpd/users_list 此为默认值2.2.2.15 vsftpd 服务指定用户身份运行
nopriv_usernobody 此为默认值
2.2.2.16 连接数限制
max_clients0 最大并发连接数
max_per_ip0 每个 IP 同时发起的最大连接数2.2.2.17 传输速率字节/秒
anon_max_rate0 匿名用户的最大传输速率
local_max_rate0 本地用户的最大传输速率2.2.2.18 连接时间秒为单位
connect_timeout60 主动模式数据连接超时时长
accept_timeout60 被动模式数据连接超时时长
data_connection_timeout300 数据连接无数据输超时时长
idle_session_timeout60 无命令操作超时时长2.2.2.19 优先以文本方式传输
ascii_upload_enableYES
ascii_download_enableYES2.2.2.20 实现基于 SSL 的 FTPS
查看是否支持 SSL
[rootcentos8 ~]#ldd which vsftpd|grep libssl
libssl.so.1.1 /lib64/libssl.so.1.1 (0x00007f8878e2c000)创建自签名证书
# CentOS 7 上可以实现
cd /etc/pki/tls/certs/
make vsftpd.pem
openssl x509 -in vsftpd.pem -noout –text
# 或者分别生成一个证书和私钥文件
mkdir /etc/vsftpd/ssl
cd /etc/vsftpd/ssl
openssl req -x509 -nodes -keyout vsftpd.key -out vsftpd.crt -days 365 -newkey rsa:2048配置 vsftpd 服务支持 SSL
[rootcentos7 ~]#vim /etc/vsftpd/vsftpd.conf
ssl_enableYES #启用SSL
allow_anon_sslNO #匿名不支持SSL
force_local_logins_sslYES #本地用户登录加密
force_local_data_sslYES #本地用户数据传输加密
rsa_cert_file/etc/pki/tls/certs/vsftpd.pem
#rsa_private_key_file /path/file #此项如果没有指定私钥也在证书文件中
#ssl_tlsv1YES
#ssl_sslv2NO
#ssl_sslv3NO
#require_ssl_reuseNO
#ssl_ciphersHIGH[rootcentos7 ~]#systemctl restart vsftpd
[rootcentos7 ~]#ftp 192.168.100.7
Connected to 192.168.100.7 (192.168.100.7).
220-welcome to magedu
220
Name (192.168.100.8:root): wang
530 Non-anonymous sessions must use encryption.
Login failed.
421 Service not available, remote server has closed connection# 用filezilla等工具测试2.2.3 vsftpd 虚拟用户概念
vsftpd 的虚拟用户
所有虚拟用户会统一映射为一个指定的系统帐号访问共享位置即为此系统帐号的家目录各虚拟用户可被赋予不同的访问权限通过匿名用户的权限控制参数进行指定
虚拟用户帐号的存储方式
存储于文件编辑文本文件此文件需要被编码为 hash 格式。奇数行为用户名偶数行为密码 使用命令db_load -T -t hash -f vusers.txt vusers.db生成 vsftpd 可识别的.db格式存储于关系型数据库中的表中实时查询数据库完成用户认证 vsftpd 支持 mysql 库pam 要依赖于 pam-mysql /lib64/security/pam_mysql.so /usr/share/doc/pam_mysql-0.7/README
2.2.4 基于文件验证的虚拟用户
2.2.4.1 创建用户数据文件
vim /etc/vsftpd/vusers.txt
wang
wangpass
mage
magepass
cd /etc/vsftpd/
db_load -T -t hash -f vusers.txt vusers.db
chmod 600 vusers.db2.2.4.2 创建用户访问 FTP 共享文件目录
useradd -d /data/ftproot -s /sbin/nologin -r vuser
mkdir -pv /data/ftproot/upload
setfacl -m u:vuser:rwx /data/ftproot/upload
#chmod arx /data/ftproot/ 如果自动创建家目录需修改权限2.2.4.3 创建 pam 配置文件
vim /etc/pam.d/vsftpd.db
auth required pam_userdb.so db/etc/vsftpd/vusers
account required pam_userdb.so db/etc/vsftpd/vusers2.2.4.4 指定 pam 配置文件
vim /etc/vsftpd/vsftpd.conf
guest_enableYES
guest_usernamevuser
pam_service_namevsftpd.db2.2.4.4 每个虚拟用户建立独立的配置文件
# 指定各个用户配置文件存放的路径
vim /etc/vsftpd/vsftpd.conf
user_config_dir/etc/vsftpd/vusers.d/# 创建各个用户配置文件存放的路径
mkdir /etc/vsftpd/vusers.d/
cd /etc/vsftpd/vusers.d/# 创建各用户自已的配置文件,允许wang用户可读写其它用户只读
vim wang
anon_upload_enableYES
anon_mkdir_write_enableYES
anon_other_write_enableYES# 创建各用户自已的配置文件
vim mage # 登录目录改变至指定的目录
local_root/data/ftproot22.2.5 基于 mysql 验证的虚拟用户
2.2.5.1 环境准备
本实验在两台 CentOS 主机上实现 CentOS 7 一台做为 FTP 服务器一台做数据库服务器
2.2.5.2 在数据库服务器上安装 mysql 数据库
yum –y install mariadb-server
systemctl enable --now mariadb.service2.2.5.3 在数据库服务上配置数据库支持 vsftpd 服务
# 建立存储虚拟用户数据库和表
mysql CREATE DATABASE vsftpd;
mysql USE vsftpd;
mysql CREATE TABLE users (
id INT AUTO_INCREMENT NOT NULL PRIMARY KEY,
name CHAR(50) BINARY NOT NULL,
password CHAR(48) BINARY NOT NULL
);
# 添加虚拟用户为了安全应该使用PASSWORD函数加密其密码后存储
mysql INSERT INTO users(name,password) values(wang,password(magedu));
mysql INSERT INTO users(name,password) values(mage,password(magedu));
# 创建连接的数据库用户
mysql GRANT SELECT ON vsftpd.* TO vsftpd172.16.0.% IDENTIFIED BY magedu;
mysql FLUSH PRIVILEGES;2.2.5.4 在 FTP 服务器上安装 vsftpd 和 pam_mysql 包
yum install vsftpd -y
yum install pam_mysql -y对于 centos 6pam_mysql 由 EPEL 的源中提供对于 centos7 和 8无对应 rpm 包需手动编译安装pam-mysql 源码进行编译
# 安装相关包
yum install vsftpd gcc gcc-c make mariadb-devel pam-devel# 下载pam-mysql源码进行编译
wget http://prdownloads.sourceforge.net/pam-mysql/pam_mysql-0.7RC1.tar.gz
# https://github.com/NigelCunningham/pam-MySQL/archive/v0.8.1.tar.gztar xvf pam_mysql-0.7RC1.tar.gz
cd pam_mysql-0.7RC1/
./configure --with-pam-mods-dir/lib64/security
# 如果上面命令不指定 --with-pam-mods-dir/lib64/security 会报以下错误
# checking if the second argument of pam_conv.conv() takes const pointer... no
# configure: error: Your system doesn\t appear to be configured to use PAM.
# Perhaps you need to specify the correct location where the PAM modules reside.make make install
[rootvsftpd ~]#ll /lib64/security/pam_mysql*
-rwxr-xr-x 1 root root 882 Dec 17 14:34 /lib64/security/pam_mysql.la
-rwxr-xr-x 1 root root 141712 Dec 17 14:34 /lib64/security/pam_mysql.so2.2.5.5 在 FTP 服务器上建立 pam 认证所需文件
vi /etc/pam.d/vsftpd.mysql# 添加如下两行
auth required pam_mysql.so uservsftpd passwdmagedu hostmysqlserver dbvsftpd tableusers usercolumnname passwdcolumnpassword crypt2
account required pam_mysql.so uservsftpd passwdmagedu hostmysqlserver dbvsftpd tableusers usercolumnname passwdcolumnpassword crypt2参考 README 可知
crypt 加密方式 0 表示不加密 1 表示 crypt(3)加密 2 表示使用 mysql password()函数加密 3 表示 md5 加密 4 表示 sha1 加密配置字段说明 auth 表示认证 account 验证账号密码正常使用 required 表示认证要通过 pam_mysql.so 模块是默认的相对路径是相对/lib64/security/路径而言也可以写绝对路径后 面为给此模块传递的参数 uservsftpd 为登录 mysql 的用户 passwdmagedu 登录 mysql 的的密码 hostmysqlserver mysql 服务器的主机名或 ip 地址 dbvsftpd 指定连接 msyql 的数据库名称 tableusers 指定连接数据库中的表名 usercolumnname 当做用户名的字段 passwdcolumnpassword 当做用户名字段的密码 crypt2 密码的加密方式为 mysql password()函数加密
2.2.5.6 建立相应用户和修改 vsftpd 配置文件
# 建立虚拟用户映射的系统用户及对应的目录
useradd -s /sbin/nologin -d /data/ftproot -r vuser
# centos7 需除去ftp根目录的写权限
chmod 555 /data/ftproot
mkdir -pv /data/ftproot/{upload,pub}
setfacl –m u:vuser:rwx /data/ftproot/upload
# 确保/etc/vsftpd.conf中已经启用了以下选项
anonymous_enableYES
# 添加下面两项
guest_enableYES
guest_usernamevuser
# 修改下面一项原系统用户无法登录
pam_service_namevsftpd.mysql# 启动vsftpd服务
systemctl enable --now vsftpd2.2.5.7 在 FTP 服务器上配置虚拟用户具有不同的访问权限
vsftpd 可以在配置文件目录中为每个用户提供单独的配置文件以定义其 ftp 服务访问权限 每个虚拟用户的配置文件名同虚拟用户的用户名。配置文件目录可以是任意未使用目录 只需要在 vsftpd.conf 指定其路径及名称即可
# 配置vsftpd为虚拟用户使用配置文件目录
vim /etc/vsftpd/vsftpd.conf
# 添加如下选项
user_config_dir/etc/vsftpd/vusers.d/
# 创建所需要目录并为虚拟用户提供配置文件
mkdir /etc/vsftpd/vusers.d/
cd /etc/vsftpd/vusers.d/
touch wang mage
# 配置虚拟用户的访问权限
# 虚拟用户对vsftpd服务的访问权限是通过匿名用户的相关指令进行的。如要让用户wang具有上传文件的权
限可修改/etc/vsftpd/vusers.d/wang文件在里面添加如下选项并设置为YES即可,只读则设为NO
# 注意需确保对应的映射用户对于文件系统有写权限
anon_upload_enable{YES|NO}
anon_mkdir_write_enable{YES|NO}
anon_other_write_enable{YES|NO}
# 登录目录改变至指定的目录
local_root/data/ftproot2三.文件共享服务
3.1 NFS 分布式文件系统协议
Network File System(NFS):网络文件系统是一个分布式文件系统协议最初由 Sun Microsystems(SUN)在 1984 年开发其允许用户在客服端通过计算机网络 访问服务器的文件就如同在客户端本地访问一样。和其他协议一样NFS 基于 Open Network Computing Remote Procedure Call(ONC RPC)远程过程调用 系统。NFS 是一个开放的标准定义于一个 RFC 中允许任何人实现该协议。
3.2 NFS 工作原理
RPC 采用 C/S 模式客户机请求程序调用进程发送一个有进程参数的调用信息到服务 进程然后等待应答信息。在服务器端进程保持睡眠状态直到调用信息到达为止。 当一个调用信息到达服务器获得进程参数计算结果发送答复信息然后等待 下一个调用信息最后客户端调用进程接收答复信息获得进程结果然后调用 执行继续进行。
NFS 优势节省本地存储空间将常用的数据,如/home 目录存放在 NFS 服务 器上且可以通过网络访问本地终端将可减少自身存储空间的使用
3.3 NFS 软件
软件包nfs-utils 相关软件包rpcbind必须tcp_wrappers Kernel 支持nfs.ko 端口2049(nfsd), 其它端口由 portmap(111)分配
说明CentOS 6 开始 portmap 进程由 rpcbind 代替 NFS 服务主要进程 rpc.nfsd 最主要的 NFS 进程管理客户端是否可登录 rpc.mountd 挂载和卸载 NFS 文件系统包括权限管理 rpc.lockd 非必要管理文件锁避免同时写出错 rpc.statd 非必要检查文件一致性可修复文件 日志位置/var/lib/nfs/ NFS 配置文件 /etc/exports /etc/exports.d/\*.exports
3.4 NFS 配置
/dir 主机1(opt1,opt2) 主机2(opt1,opt2)...格式
#号开始为注释主机格式单个主机ipv4ipv6FQDN
IP networks两种掩码格式均支持
172.18.0.0/255.255.0.0
172.18.0.0/16
wildcards主机名通配例如*.magedu.comIP不可以
netgroupsNIS域的主机组group_name
anonymous表示使用*通配所有客户端每个条目指定目录导出到的哪些主机及相关的权限和选项
默认选项(ro,sync,root_squash,no_all_squash)
ro,rw 只读和读写
async 异步数据变化后不立即写磁盘性能高
sync 1.0.0后为默认同步数据在请求时立即写入共享存储磁盘
root_squash 默认远程root映射为nfsnobody,UID为65534CentOS8 为nobody,早期版本是4294967294 (nfsnobody)
no_root_squash 远程root映射成root用户
all_squash 所有远程用户(包括root)都变成nfsnobody,CentOS8 为nobody
no_all_squash 默认保留共享文件的UID和GID
anonuid和anongid 指明匿名用户映射为特定用户UID和组GID而非nfsnobody,可配合all_squash使用配置示例
vim /etc/exports
/myshare server.example.com
/myshare *.example.com
/myshare server?.example.com
/myshare server[0-20].example.com
/myshare 172.25.11.10
/myshare 172.25.0.0/16
/myshare 2000:472:18:b51:c32:a21
/myshare 2000:472:18:b51::/64
/myshare *.example.com 172.25.0.0/16
/myshare desktop.example.com(ro)
/myshare desktop.example.com(ro) server[0-20].example.com(rw)
/myshare diskless.example.com(rw,no_root_squash)3.5 NFS 相关工具
3.5.1 rpcinfo
rpcinfo 工具可以查看 RPC 相关信息查看注册在指定主机的 RPC 程序 rpcinfo -p hostname 查看 RPC 注册程序 rpcinfo -s hostname 例子
[rootcentos8 ~]#rpcinfo -pprogram vers proto port service100000 4 tcp 111 portmapper100000 3 tcp 111 portmapper100000 2 tcp 111 portmapper100000 4 udp 111 portmapper100000 3 udp 111 portmapper100000 2 udp 111 portmapper100024 1 udp 36310 status100024 1 tcp 45265 status
[rootcentos8 ~]#rpcinfo -sprogram version(s) netid(s) service owner100000 2,3,4 local,udp,tcp,udp6,tcp6 portmapper superuser100024 1 tcp6,udp6,tcp,udp status 293.5.2 exports
exportfs:可用于在 NFS 服务器管理 NFS 导出的文件系统 常用选项
–v 查看本机所有 NFS 共享–r 重读配置文件并共享目录–a 输出本机所有共享–au 停止本机所有共享
3.5.3 showmount
showmount 用来查询远程服务器上的 NFS 服务信息。 showmount -e hostname
3.5.4 mount.nfs
mount.nfs工具用于在客户端挂载网络文件系统 挂载 NFS 时选项参数说明
fg默认前台挂载bg 后台挂载hard默认持续请求soft 非持续请求intr 和 hard 配合请求可中断rsize 和 wsize 一次读和写数据最大字节数rsize32768netdev 无网络不挂载
提示基于安全考虑建议使用 nosuid,nodev,noexec 挂载选项_
范例临时挂载 NFS 共享 mount -o rw,nosuid,fg,hard,intr 172.16.0.1:/testdir /mnt/nfs/ 范例开机挂载
vim /etc/fstab
172.16.0.1:/public /mnt/nfs nfs defaults,_netdev 0 03.6 自动挂载文件系统
可使用 autofs 服务按需要挂载外围设备NFS 共享等并在空闲 5 分钟后后自动卸载
3.6.1 相关文件
软件包 autofs 服务文件/usr/lib/systemd/system/autofs.service 配置文件/etc/auto.master
3.6.2 配置文件格式
参看帮助man 5 autofs 所有导出到网络中的 NFS 启用特殊匹配 -host 至“browse” 范例/net 目录可以自动挂载 NFS 共享
cat /etc/auto.master
/net -hosts
cd /net/192.168.8.100/自动挂载资源有两种格式 相对路径法将 mount point 路径分成 dirname 和 basename 分别配置 可能会影响现有的目录结构 绝对路径法直接匹配全部绝对路径名称不会影响本地目录结构 相对路径法
/etc/auto.master 格式
挂载点的dirname 指定目录的配置文件路径指定目录的配置文件格式
挂载点的basename 挂载选项 选项设备相对路径例子
[rootcentos8 ~]#vim /etc/auto.master
/misc /etc/auto.misc
[rootcentos8 ~]#vim /etc/auto.misc
cd -fstypeiso9660,ro,nosuid,nodev :/dev/cdrom相对路径法支持通配符
vim /etc/auto.master
/misc /etc/auto.misc
vim /etc/auto.misc
#表示/misc下面的子目录和nfs共享/export目录的子目录同名
* server:/export/绝对路径法
/etc/auto.master 格式
/- 指定配置文件路径指定配置文件格式
绝对路径 挂载选项 选项设备绝对路径例子
vim /etc/auto.master:
/- /etc/auto.direct
vim /etc/auto.direct:
/foo -fstypenfs server1:/export/foo
/user/local/ -fstypenfs,vers3 server1:/usr/local
/mnt/cdrom -fstypeiso9660 :/dev/cdrom3.7 案例
3.7.1 目标
将 NFS 的共享目录通过 autofs 发布出来做为远程主机用户的家目录
3.7.2 环境准备 三台主机 一台主机 nfs server,IP:192.168.8.100 另两台当 nfs client,IP:192.168.8.101 和 192.168.8.102 3.7.3 步骤
# NFS服务器创建用户和相应的家目录将用户wang的家目录共享
useradd -d /data/wang wang
Vim /etc/exports.d/test.exports
/data/wang *(rw,anonuid1000,anongid1000,all_sqush)
# 在第一台NFS客户端主机192.168.8.101上实现相对路径法的autofs
vim /etc/auto.master
/home /etc/homeauto
vim /etc/homeauto
* -fstypenfs,vers3 192.168.8.100:/data/wang/
# 注意home目录下其它用户家目录无法访问
# 在第二台NFS客户端主机192.168.8.102上实现绝对路径法的autofs
vim /etc/auto.master
/- /etc/homeauto
vim e/etc/homeauto
/home/wang -fstypenfs,vers3 nfsserver:/data/wang四.SAMBA 服务
Samba 是基于SMB网络协议实现的自由软件最初由Andrew Tridgell。Samba 为各种 Microsoft Windows 客户端提供文件和打印服务可以作为域控制器(DC)或域成员与 Microsoft Windows 服务域集成。从版本 4 开始它支持活动目录(Active Directory) 和 Microsoft Windows NT 域。
另外Samba 也是巴西的一种最受欢迎的音乐和舞蹈形式。每年狂欢节的主角都是 Samba 舞。
4.1 SAMBA 服务介绍
SMBServer Message Block 服务器消息块IBM 发布最早是 DOS 网络文件共享协议 CIFScommon internet file system微软于 1996 年将 SMB 改名并加入很多特性的协议 SAMBA1991 年 Andrew Tridgell,实现 windows 和 UNIX 相通
CIFS/SMB 和网络文件系统(NFS) 是目前在 network-attached(NAS)存储系统使用最为广泛的协议。 SAMBA 官网 SAMBA 的功能
共享文件和打印实现在线编辑实现登录 SAMBA 用户的身份认证可以进行 NetBIOS 名称解析外围设备共享
Windows 计算机网络管理模式
工作组 WORKGROUP计算机对等关系帐号信息各自管理域 DOMAINC/S 结构帐号信息集中管理DC,AD
4.2 SAMBA 软件介绍
相关包
samba 提供 smb 服务samba-client 客户端软件samba-common 通用软件cifs-utils smb 客户端工具samba-winbind 和 AD 相关
相关服务进程
smbd 提供 smbcifs服务 TCP:139,445nmbd NetBIOS 名称解析 UDP:137,138
主配置文件/etc/samba/smb.conf 帮助参看man smb.conf 语法检查 testparm [-v][/etc/samba/smb.conf] 客户端工具smbclientmount.cifs
安装和启动服务
yum/dnf install samba
systemctl start smb
systemctl start nmb4.3 SAMBA 客户端工具
访问 SAMBA 服务器时使用 UNC 命名规范 UNC 路径: Universal Naming Convention 通用命名规范格式如下
\\sambaserver\sharename4.3.1 使用 smbclient 访问 SAMBA 服务器
smbclient -L instructor.example.com
smbclient -L instructor.example.com -U smb用户%password
# 可以使用-U选项来指定用户%密码或通过设置和导出USER和PASSWD环境变量来指定
smbclient //instructor.example.com/shared -U wang
cd directory
get file1
put file24.3.2 挂载 CIFS 文件系统
范例手动挂载
mount -o userwang,passwordmagedu //server//shared /mnt/smb范例开机自动挂载
cat /etc/fstab
# 可以用文件代替用户名和密码的输入
//server/homes /mnt cifs credentials或cred/etc/smb.txt 0 0cat /etc/smb.txt
usernamewang #或 userwang
passwordpassword #或 passpassword
chmod 600 /etc/smb.txt4.4 管理 SAMBA 用户
4.4.1 samba 用户
相关包samba-common-tools 相关工具smbpasswd pdbedit 用户数据库/var/lib/samba/private/passdb.tdb 说明samba 用户须是 Linux 用户建议使用/sbin/nologin
4.4.2 管理用户命令
添加 samba 用户
smbpasswd -a user
pdbedit -a -u user修改用户密码
smbpasswd user删除用户和密码
smbpasswd –x user
pdbedit –x –u user查看 samba 用户列表
pdbedit –L –v例
[rootcentos8 ~]#pdbedit -L
No builtin backend found, trying to load plugin
smb1:1002:
smb2:1003:
smb3:1004:
[rootcentos8 ~]#pdbedit -L -v
No builtin backend found, trying to load plugin
---------------
Unix username: smb1
NT username:
Account Flags: [U ]
User SID: S-1-5-21-1476810783-3936299954-1329646792-1000
Primary Group SID: S-1-5-21-1476810783-3936299954-1329646792-513
Full Name:
Home Directory: \\linux39\smb1
HomeDir Drive:
Logon Script:
Profile Path: \\linux39\smb1\profile
Domain: CENTOS8
Account desc:
Workstations:
Munged dial:
Logon time: 0
Logoff time: Wed, 06 Feb 2036 23:06:39 CST
Kickoff time: Wed, 06 Feb 2036 23:06:39 CST
Password last set: Thu, 19 Dec 2019 10:02:31 CST
Password can change: Thu, 19 Dec 2019 10:02:31 CST
Password must change: never
Last bad password : 0
Bad password count : 0
Logon hours : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
---------------
Unix username: smb2
NT username:
Account Flags: [U ]
User SID: S-1-5-21-1476810783-3936299954-1329646792-1001
Primary Group SID: S-1-5-21-1476810783-3936299954-1329646792-513
Full Name:
Home Directory: \\linux39\smb2
HomeDir Drive:
Logon Script:
Profile Path: \\linux39\smb2\profile
Domain: CENTOS8
Account desc:
Workstations:
Munged dial:
Logon time: 0
Logoff time: Wed, 06 Feb 2036 23:06:39 CST
Kickoff time: Wed, 06 Feb 2036 23:06:39 CST
Password last set: Thu, 19 Dec 2019 09:57:36 CST
Password can change: Thu, 19 Dec 2019 09:57:36 CST
Password must change: never
Last bad password : 0
Bad password count : 0
Logon hours : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
---------------查看服务器状态–smbstatus
[rootcentos8 ~]#smbstatus
Samba version 4.9.1
PID Username Group Machine Protocol Version Encryption Signing
45299 smb1 smb1 192.168.39.6 (ipv4:192.168.39.6:55898) NT1 - -
Service pid Machine Connected at Encryption Signing
smb1 45299 192.168.39.6 Thu Dec 19 10:30:24 AM 2019 CST - -
No locked files4.5 SAMBA 服务器配置
amba 配置文件 /etc/smb.conf 格式 使用.ini 文件的格式
全局设置
[global] 服务器通用或全局设置的部分
特定共享设置
[homes] 用户的家目录共享[printers] 定义打印机资源和服务[sharename] 自定义的共享目录配置其中#和;开头的语句为注释大小写不敏感
samba 配置中的宏定义
%m 客户端主机的 NetBIOS 名%M 客户端主机的 FQDN%H 当前用户家目录路径%U 当前用户的用户名%g 当前用户所属组%h samba 服务器的主机名%L samba 服务器的 NetBIOS 名%I 客户端主机的 IP%T 当前日期和时间%S 可登录的用户名
4.5.1 SAMBA 服务器全局配置
workgroup 指定工作组名称 server string 主机注释信息 netbios name 指定 NetBIOS 名注意netbios name 需要启动 nmb 服务 范例
[global]workgroup workgroupnetbios name linux39interfaces 指定服务侦听接口和 IP hosts allow 可用逗号空格或 tab 分隔默认允许所有主机访问也可在每个共享独立 配置如:在[global]设置将应用并覆盖所有共享设置可以是以下格式
IPv4 network/prefix: 172.16.0.0/24 IPv4 前缀: 172.16.0.
IPv4 network/netmask: 172.16.0.0/255.255.255.0
主机名: desktop.example.com
以example.com后缀的主机名: .example.com例
hosts allow 172.16. .example.comhosts deny 拒绝指定主机访问格式和 hosts allow 相同 config file/etc/samba/conf.d/%U 用户独立的配置文件 Log file/var/log/samba/log.%I 不同客户机采用不同日志 log level 2 日志级别默认为 0不记录日志 例
[global]Log file/var/log/samba/log.%Ilog level 2max log size50 日志文件达到 50K将轮循 rotate,单位 KB Security 三种认证方式
usersamba 用户采有 linux 用户samba 的独立口令share匿名(CentOS7 不再支持)已不建议使用server已不建议使用
passdb backend tdbsam 密码数据库格式
4.5.2 配置特定目录共享
每个共享目录应该有独立的[ ]部分 [共享名称] 远程网络看到的共享名称 comment 注释信息 path 所共享的目录路径 public 能否被 guest 访问的共享默认 no和 guest ok 类似 browsable 是否允许所有用户浏览此共享,默认为 yes,no 为隐藏 writableyes 可以被所有用户读写默认为 no read onlyno 和 writableyes 等价如与以上设置冲突放在后面的设置生效默认只读 write list 用户组名组名,用分隔如 writableno列表中用户或组可读写不在列表中用户 valid users 特定用户才能访问该共享如为空将允许所有用户用户名之间用空格分隔
范例基于特定用户和组的共享
vim /etc/samba/smb.conf
[share]
path /app/dir
valid userswang,admins
writeable no
browseable no4.6 案例
4.6.1 利用 SAMBA 实现指定目录共享
# 在samba服务器上安装samba包
yum -y install samba
# 创建samba用户和组
groupadd -r admins
useradd -s /sbin/nologin -G admins wang
smbpasswd -a wang
useradd -s /sbin/nologin mage
smbpasswd -a mage
# 创建samba共享目录,并设置SElinux
mkdir /testdir/smbshare
chgrp admins /testdir/smbshare
chmod 2775 /testdir/smbshare
# samba服务器配置
vim /etc/samba/smb.conf
...省略...
[share]
path /testdir/smbshare
write list admins
systemctl enable --now smb nmb
# samba客户端访问
yum -y install cifs-utils
# 用wang用户挂载smb共享并访问
mkdir /mnt/wang
mount -o usernamewang //smbserver/share /mnt/wang
echo Hello wang /mnt/wang/wangfile.txt
# 用mage用户挂载smb共享并访问
mkdir /mnt/mage
mount -o usernamemage //smbserver/share /mnt/mage
touch /mnt/mage/magefile.txt4.6.2 实现不同 samba 用户访问相同的 samba 共享实现不同的配置
# 创建三个samba用户,并指定密码为magedu
useradd -s /sbin/nologin -r smb1
useradd -s /sbin/nologin -r smb2
useradd -s /sbin/nologin -r smb3
smbpasswd –a smb1
smbpasswd –a smb2
smbpasswd –a smb3
# 修改samba配置文件
Vim /etc/samba/smb.conf
# 在workgroup下加一行
config file /etc/samba/conf.d/%U 说明%U表示用户名
[share]
Path/data/dir
Read only NO
Guest ok yes
write listwheel
# 针对smb1和smb2用户创建单独的配置文件
Vim /etc/samba/conf.d/smb1
[share]
Path/data/dir1
Read only NO 等价于writable yes
Create mask0644
# 说明默认为744
Vim /etc/samba/conf.d/smb2
[share]
path/data/dir2
systemctl restart smb nmb
# 用户smb1smb2,smb3访问share共享目录看到目录是不同目录
smbclient //sambaserver/share -U smb1%magedu
smbclient //sambaserver/share -U smb2%magedu
smbclient //sambaserver/share -U smb3%magedu五.数据同步 rsync
在生产环境有时会需要两台主机的特定目录实现实时同步。比如将 NFS 共享目录的 数据文件自动实时同步到备份的服务器特定目录中这时就会用到 rsync rsync 是一款轻量级的备份和远程拷贝软件其通过比较文件的修改时间和大小在计算机 和外部硬盘驱动器之间以及在联网的计算机之间有效地传输和同步文件。它通常出现在类 unix 操作系统上。Rsync 是用 C 编写的单线程应用程序。rsync 使用的算法是一种增量编码 适用于用于最小化网络使用。Zlib 可以用于额外的数据压缩也可以使用 SSH 或 stunnel 进行安全加密。
5.1 数据实时同步技术
一般企业在使用 rsync 时会配合 inotify 使用使用 inotify 监听文件修改情况一旦文件某些 属性改变就通知 rsync 进行备份
inotify rsync 方式实现数据同步sersync 金山公司周洋在 inotify 软件基础上进行开发的功能更加强大 工作原理 要利用监控服务inotify监控同步数据服务器目录中信息的变化 发现目录中数据产生变化就利用 rsync 服务推送到备份服务器上 inotify 异步的文件系统事件监控机制利用事件驱动机制而无须通过诸如 cron 等的轮询机制来获取事件 linux 内核从 2.6.13 起支持 inotify通过 inotify 可以监控文件系统中添加、删除修改、移动等各种事件 [rootcentos8 ~]#grep -i inotify /boot/config-4.18.0-80.el8.x86_64
CONFIG_INOTIFY_USERy5.2 notify
5.2.1 notify 需要内核支持
Linux 支持 inotify 的内核最小版本为 2.6.13参看 man 7 inotify
ls -l /proc/sys/fs/inotify #列出下面的文件说明服务器内核支持inotify
-rw-r--r-- 1 root root 0 Dec 7 10:10 max_queued_events
-rw-r--r-- 1 root root 0 Dec 7 10:10 max_user_instances
-rw-r--r-- 1 root root 0 Dec 6 05:54 max_user_watchesinotify 内核参数说明
max_queued_eventsinotify事件队列最大长度如值太小会出现 Event Queue Overflow 误默认值16384 max_user_instances每个用户创建inotify实例最大值默认值128 max_user_watches可以监视的文件数量单进程默认值8192[rootcentos8 ~]#vim /etc/sysctl.conf
fs.inotify.max_queued_events66666
fs.inotify.max_user_watches100000
[rootcentos8 ~]#sysctl -p
fs.inotify.max_queued_events 66666
fs.inotify.max_user_watches 100000
[rootcentos8 ~]#cat /proc/sys/fs/inotify/*
66666
128
1000005.2.2 inotify-tools 工具
inotify-tools 参考文档https://github.com/rvoicilas/inotify-tools/wiki 安装 inotify-tools基于 epel 源 yum install inotify-tools
inotify-tools 包主要工具
inotifywait 在被监控的文件或目录上等待特定文件系统事件open closedelete 等 发生常用于实时同步的目录监控inotifywatch收集被监控的文件系统使用的统计数据指文件系统事件发生的次数统计
inotifywait 命令常见选项
-m, --monitor 始终保持事件监听-d, --daemon 以守护进程方式执行和-m 相似配合-o 使用-r, --recursive 递归监控目录数据信息变化-q, --quiet 输出少量事件信息–exclude 指定排除文件或目录使用扩展的正则表达式匹配的模式实现–excludei 和 exclude 相似不区分大小写-o, --outfile 打印事件到文件中相当于标准正确输出注意使用绝对路径-s, --syslogOutput 发送错误到 syslog 相当于标准错误输出–timefmt 指定时间输出格式–format 指定的输出格式即实际监控输出内容-e 指定监听指定的事件如果省略表示所有事件都进行监听
inotifywait 的–timefmt 时间格式 参考 man 3 strftime
%Y 年份信息包含世纪信息%y 年份信息不包括世纪信息%m 显示月份范围 01-12%d 每月的第几天范围是 01-31%H 小时信息使用 24 小时制范围 00-23%M 分钟范围 00-59
如 --timefmt %Y-%m-%d %H:%M
inotifywait 的 --format 格式定义
%T 输出时间格式中定义的时间格式信息通过 --timefmt option 语法格式指定时间信息%w 事件出现时监控文件或目录的名称信息%f 事件出现时将显示监控目录下触发事件的文件或目录信息否则为空%e 显示发生的事件信息不同的事件默认用逗号分隔%Xe 显示发生的事件信息不同的事件指定用 X 进行分隔
例
--format %T %w%f event: %;e
--format %T %w %finotifywait -e 选项指定的事件类型
create 文件或目录创建delete 文件或目录被删除modify 文件或目录内容被写入attrib 文件或目录属性改变close_write 文件或目录关闭在写入模式打开之后关闭的close_nowrite 文件或目录关闭在只读模式打开之后关闭的close 文件或目录关闭不管读或是写模式open 文件或目录被打开moved_to 文件或目录被移动到监控的目录中moved_from 文件或目录从监控的目录中被移动move 文件或目录不管移动到或是移出监控目录都触发事件access 文件或目录内容被读取delete_self 文件或目录被删除目录本身被删除unmount 取消挂载
inotifywait -e create,delete,moved_to,close_write, attrib
例:使用 inotifywait
#监控一次性事件
inotifywait /data
#持续前台监控
inotifywait -mrq /data
#持续后台监控并记录日志
inotifywait -o /root/inotify.log -drq /data --timefmt %Y-%m-%d %H:%M --format
%T %w%f event: %e
#持续前台监控特定事件
inotifywait -mrq /data --timefmt %F %H:%M --format %T %w%f event: %;e -e
create,delete,moved_to,close_write,attrib5.3 rsync
rsync 常用于做为 linux 系统下的数据镜像备份工具实现实现远程同步支持本地复制 或者与其他 SSH、rsync 主机同步数据支持增量备份配合任务计划rsync 能实现定时或 间隔同步配合 inotify 或 sersync可以实现触发式的实时数据同步。 官方网站 软件包rsyncrsync-daemonCentOS 8 服务文件/usr/lib/systemd/system/rsyncd.service 配置文件/etc/rsyncd.conf 端口873/tcp 5.3.1 rsync 命令
#Local:
rsync [OPTION...] SRC... [DEST]#Access via remote shell:
Pull:
rsync [OPTION...] [USER]HOST:SRC... [DEST]
Push:
rsync [OPTION...] SRC... [USER]HOST:DEST#Access via rsync daemon:
Pull:
rsync [OPTION...] [USER]HOST::SRC... [DEST]
rsync [OPTION...] rsync://[USER]HOST[:PORT]/SRC... [DEST]
Push:
rsync [OPTION...] SRC... [USER]HOST::DEST
rsync [OPTION...] SRC... rsync://[USER]HOST[:PORT]/DESTrsync 有三种工作方式
本地文件系统上实现同步。命令行语法格式为上述Local段的格式。本地主机使用远程 shell 和远程主机通信。命令行语法格式为上述Access via remote shell段的格式。本地主机通过网络套接字连接远程主机上的 rsync daemon。命令行语法格式为上述 Access viarsync daemon段的格式。
前两者的本质是通过本地或远程 shell而第 3 种方式则是让远程主机上运行 rsyncd 服务使其监听在一个端口上等待客户端的连接
rsync 常见选项
-v显示rsync过程中详细信息。可以使用-vvvv获取更详细信息。
-P显示文件传输的进度信息。(实际上-P--partial --progress其中的--progress才是显
示进度信息的)。
-n --dry-run 仅测试传输而不实际传输。常和-vvvv配合使用来查看rsync是如何工作的。
-a --archive 归档模式表示递归传输并保持文件属性。等同于-rtopgDl。
-r --recursive递归到目录中去。
-t --times保持mtime属性。强烈建议任何时候都加上-t否则目标文件mtime会设置为系统时间
导致下次更新检查出mtime不同从而导致增量传输无效。
-o --owner保持owner属性(属主)。
-g --group保持group属性(属组)。
-p --perms保持perms属性(权限不包括特殊权限)。
-D 是--device --specials选项的组合即也拷贝设备文件和特殊文件。
-l --links如果文件是软链接文件则拷贝软链接本身而非软链接所指向的对象
-z 传输时进行压缩提高效率
-R --relative使用相对路径。意味着将命令行中指定的全路径而非路径最尾部的文件名发送给服务端
包括它们的属性。用法见下文示例。
--size-only 默认算法是检查文件大小和mtime不同的文件使用此选项将只检查文件大小。
-u --update 仅在源mtime比目标已存在文件的mtime新时才拷贝。注意该选项是接收端判断的不会
影响删除行为。
-d --dirs 以不递归的方式拷贝目录本身。默认递归时如果源为dir1/file1则不会拷贝dir1
目录使用该选项将拷贝dir1但不拷贝file1。
--max-size 限制rsync传输的最大文件大小。可以使用单位后缀还可以是一个小数值(例如--
max-size1.5m)
--min-size 限制rsync传输的最小文件大小。这可以用于禁止传输小文件或那些垃圾文件。
--exclude 指定排除规则来排除不需要传输的文件。
--delete 以SRC为主对DEST进行同步。多则删之少则补之。注意--delete是在接收端执行
的所以它是在exclude/include规则生效之后才执行的。
-b --backup 对目标上已存在的文件做一个备份备份的文件名后默认使用~做后缀。
--backup-dir指定备份文件的保存路径。不指定时默认和待备份文件保存在同一目录下。
-e 指定所要使用的远程shell程序默认为ssh。
--port 连接daemon时使用的端口号默认为873端口。
--password-filedaemon模式时的密码文件可以从中读取密码实现非交互式。注意这不是远程
shell认证的密码而是rsync模块认证的密码。
-W --whole-filersync将不再使用增量传输而是全量传输。在网络带宽高于磁盘带宽时该选项比增
量传输更高效。
--existing 要求只更新目标端已存在的文件目标端还不存在的文件不传输。注意使用相对路径时如
果上层目录不存在也不会传输。
--ignore-existing要求只更新目标端不存在的文件。和--existing结合使用有特殊功能见下文
示例。
--remove-source-files要求删除源端已经成功传输的文件5.3.2 以独立服务方式运行 rsync
范例以独立服务方式运行 rsync该服务在备份服务器上运行
#创建rsync服务器的配置文件
vi /etc/rsyncd.conf
uid root
gid root
use chroot no
max connections 0
ignore errors
exclude lostfound/
log file /var/log/rsyncd.log
pid file /var/run/rsyncd.pid
lock file /var/run/rsyncd.lock
reverse lookup no
hosts allow 192.168.8.0/24
[backup]
path /backup/
comment backup
read only no
auth users rsyncuser
secrets file /etc/rsync.pass
# 服务器端准备目录
mkdir /backup
# 服务器端生成验证文件
echo rsyncuser:magedu /etc/rsync.pass
chmod 600 /etc/rsync.pass
# 服务器端启动rsync服务
rsync --daemon #可加入/etc/rc.d/rc.local实现开机启动
systemctl start rsyncd #CentOS 7 以上版本
# 客户端配置密码文件
echo magedu /etc/rsync.pass
chmod 600 /etc/rsync.pass #此为必要项
# 客户端测试同步数据
rsync -avz --delete --password-file/etc/rsync.pass /data/ \
rsyncuserrsync服务器IP::backup5.4 同步脚本示例
该同步脚本在需要备份的主机上(客户端)运行
#!/bin/bash
SRC/data/htdocs/pics
DESTrsyncuserrsync-setver-IP::backup
inotifywait -mrq --timefmt %Y-%m-%d %H:%M --format %T %w %f -e create,delete,moved_to,close_write,attrib ${SRC} |while read DATE TIME DIR
FILE;doFILEPATH${DIR}${FILE}rsync -az --delete --password-file/etc/rsync.pass $SRC $DEST echo At ${TIME} on ${DATE}, file $FILEPATH was backuped up via rsync /var/log/changelist.log
done六.案例
实现基于分布式的 LAMP 架构并将 NFS 实时同步到备份服务器