samba+inotify+rsync实现文件共享实时同步

samba服务器端提供共享服务,同时作为rsync客户端将数据实时备份到rsync服务器端


samba服务器端:

yum install samba

smb服务,nmb服务负责主机名解析

添加用户,需要提前创建linux用户

useradd –s /sbin/nologin smb1

smbpasswd –a smb1

smbpasswd smb1修改口令

smbpasswd –x smb1删除用户

pdbedit –L [-v]  查看用户列表

 

windows匿名访问

vim /etc/samba/smb.conf

[public]

map to guest = Bad User

共享文件夹配置下添加

public = yes

[pub]

        comment = app

        path = /data/bz2

        valid user = smb1,@admins

        writable = yes默认为no

        write list = smb2 writable no时,只有smb2可写   +@admins表示组

        public = yes

Linux客户端

smbclient //ip/文件夹 –U user%pass

mount –o username=,password= //ip/文件夹 /mnt/smb

自动挂载

vim /etc/fstab

//ip/文件夹 /mnt/smb cifs username=,password= 0 0

或者//ip/文件夹 /mnt/smb cifs credentials=/etc/smbuser.txt 0 0

vim /etc/smbuser.txt

username=

password=

chmod 600 smbuser.txt


rsync服务器端

yum install rsync

vim /etc//etc/rsyncd.conf
uid = root 
gid = root 
use chroot = no 
max connections = 0 
ignore errors
exclude = lost+found/ 
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.35.0/24 
[backup] 
path = /data/share 
comment = backup 
read only = no 
auth users = rsyncuser 
secrets file = /etc/rsync.pass

echo "rsyncuser:centos" > /etc/rsync.pass

chmod 600 /etc/rsync.pass

rsync --daemon 可加入/etc/rc.d/rc.local实现开机启动

 

rsync客户端:

yum install inotify-tools rsync

echo "centos" > /etc/rsync.pass

chmod 600 /etc/rsync.pass

将本地share文件夹下文件(最后要加/不然会把文件夹一起同步)同步到rsync服务器backup,真实路径/data/share

测试rsync -avz --password-file=/etc/rsync.pass /data/share/ [email protected]::backup

脚本

vim inotify.sh
#!/bin/bash
SRC='/data/share/'                                                                                                                  
DEST='[email protected]::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;do
FILEPATH=${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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章