歡迎您光臨本站 註冊首頁

Linux的基本:為網上鄰居配個垃圾桶

←手機掃碼閱讀     火星人 @ 2014-03-24 , reply:0

相信大家都有過這樣的經歷:網路上的一個文件不小心被你在網上鄰居的共享中刪除了,而大家都知道網上鄰居的文件一刪除就等於徹底刪除,既不會出現在伺服器上的回收站也不會出現在本機的回收站中。想找回這個文件?很抱歉,只能用你的文件來換取一個教訓。那麼有沒有什麼解決方案來實現網上鄰居的回收站?幫我們避免這樣的誤操作呢?Windows環境下,我還未去研究是否有此類的解決方案,而Linux下為我們提供的Samba已經可以很完美地做到這一點。

  這裡我們需要Recycle VFS Module的幫助,它可以讓我們在Samba上實現回收站的功能,有了它,我們從網上鄰居被刪除的文件將會被移動到一個指定的目錄下。如果沒有在配置文件設置刪除的話將不會被自動刪除,由用戶自己清理回收站。現在就讓我們來看看如何配置這個功能。考慮到現在尚存在應用Samba 2版本的用戶,本文分別列出Samba 3和Samba 2 的Samba-Recycle配置實例。
SAMBA 2的Samba-Recycle設置方法

步驟1.下載VFS模組

下載地址:http://www.ec-base.com/download/smbrecycle.tar.gz
下載解壓后,使用GNU autoconf script 和 Makefile 進行安裝:
[becks@ec-base vfs] ./configure
[becks@ec-base vfs] make

步驟2. 將相應的模組複製到任意路徑,比如/usr/lib/Samba/vfs:

[becks@ec-base vfs]cp recycle/recycle.c /usr/lib/Samba/vfs

步驟3. 建立和編輯Recycle.conf:

[becks@ec-base vfs]cp recycle/recycle.conf /etc/Samba/
修改後的Recycle.conf文件如下:
QUOTE:
name = .recycle/%U
mode = KEEP_DIRECTORIES|NOVERSIONS|TOUCH
maxsize = 0
exclude = *.tmp|*.temp|*.o|*.obj|~$*
excludedir = /tmp|/temp|/cache
noversions = *.doc|*.xls|*.ppt

現在我就其參數進行簡單說明:
Options for recycle.conf:
name
位於共享文件根目錄回收站的名稱,這裡可以允許使用Smb.conf的變數,比如本文使用的%U
例:name = .recycle/%U
mode
KEEP_DIRECTORIES:是否保留被刪除文件的目錄層次
例:如果你刪除了共享文件下/ec-base/becks/test.txt文件,開啟此選項,你在回收站看到的也將是保留/ec-base/becks/而不是單獨的test.txt
VERSIONS : 當遇到相同文件名的時候,是否進行標號。當遇到相同文件名的時候被刪除放置回收站的時候,時間較后被刪除的文件將會被命名為filename(Copy #1),依次類推。
例:刪除test.txt
test.txt
test.txt (Copy #1)
test.txt (Copy #2)
TOUCH : 當移動文件到回收站的時候更新文件的訪問日期
Mode示例:
mode = KEEP_DIRECTORIES|VERSIONS|TOUCH
maxsize
移動到回收站文件的最大文件容量,默認為零
例: maxsize = 0
exclude
設置不被移動到回收站的文件類型,比如一些臨時文件等等
例:
exclude = *.tmp|*.temp|*.obj|~$*|*.$$$
excludedir
排除刪除時不被移動到回收站的目錄.
例:
excludedir = /tmp|/temp|/trash
noversions
不創建相同文件名稱文件的副本
例:
noversions = *.doc|*.xls|*.ppt
創建或者修改後保存退出即可。

步驟4.修改smb.conf以應用Recycle Module

在Smb.conf中添加以下2行:
vfs object = /usr/lib/Samba/vsf/recycle.so 前面所複製模組的路徑
vfs options = /etc/Samba/recycle.conf recycle.conf的路徑
例:
QUOTE:
[ec-base]
comment = ec-base website
path = /www/www.ec-base.com
read only = No
create mask = 0750
vfs object = /usr/lib/Samba/vsf/recycle.so
vfs options = /etc/Samba/recycle.conf

步驟5. 為了讓我們上面的設置生效,請重新啟動伺服器的Samba服務:

[becks@ec-base www.ec-base.com]service smb restart
OK,只是簡單的幾個步驟,便可在SAMBA v2上實現了SAMBA Samba-Recycle功能。
SAMBA 3的Samba-Recycle設置方法
Look完SAMBA 2的Samba-Recycle設置方法,現在讓我們再來看看SAMBA 3如何實現Samba-Recycle,在Samba 3中我們只需要修改Smb.conf便可以實現此功能:/etc/Samba/smb.conf
[ec-base]
comment = ec-base website
path = /www/www.ec-base.com
read only = No
create mask = 0750
vfs object = /usr/lib/Samba/vsf/recycle.so
vfs options = /etc/Samba/recycle.conf
browseable = yes
valid users = becks,@ec-base
vfs object = recycle #載入recycle模組
recycle: keeptree = yes #保留被刪除文件的目錄層次
recycle: repository = ../Recycle/%u # recycle: repository 只能指定相對路徑,也就是相對此共享文件的路徑。無法使用絕對路徑,後面的 %U 為用戶賬號。
recycle: exclude = .tmp|.temp|.o|.obj #設置不被移動到回收站的文件類型
recycle: versions = yes #若有相同文件名稱時,用編號進行標識
設置完后重啟SMB服務,這時候用戶在Samba(網上鄰居)上刪除的文件就會自動移至「recycle: repository」所指定的相對路徑里了。而被移動到「recycle: repository」目錄后的文件,其許可權為600,也就是所只有文件所有者才有權修改和查看。需要注意的是「recycle: repository」目錄的許可權,需要讓用戶有許可權寫入文件,不然就會產生錯誤,而該文件也會被直接刪除。

  由於回收站的設置當然你也要付出磁碟空間的代價,記得像清理自己PC的回收站般定期清理Samba-Recycle bin,出現錯誤信息時候,用戶可以通過查看Samba的log來確認錯誤所在。一個非常實用的Linux下的網路回首站就建立好了,在以後的工作中相信它會發揮非常大的功效的。

[火星人 ] Linux的基本:為網上鄰居配個垃圾桶已經有831次圍觀

http://coctec.com/docs/linux/show-post-137306.html