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


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