Индикация свободного пространства на samba диcке | Script

Post date: Mar 5, 2011 9:30:08 AM

Самба сервер - дешевый и надежный способ управления сервером данных. samba server - это стандартный компонент для подавляющего большинства серверов работающих на операционной системе linux. Он позволяет обмениваться файлами в сетях microsoft, т.е. позволяет компьютерам с windows сохранять и получать файлы без использования дополнительных программ.

Современные домашние сети и сети для мелкого бизнеса могут включать в себя несколько серверов и сетевых хранилищ данных (network attached storage NAS). В свою очередь, они могут содержать несколько независимых и логически раздельных устройств для хранения информации. При работе с сетевыми хранилищами данных полезно быстро определять свободное пространство и общий объем хранимых данных.

Один из способов - это присоединение сетевых дисков к локальному компьютеру (network drive mapping). После назначения сетевому ресурсу буквы локального диска в окне "компьютер" можно увидеть объем диска и доступное свободное пространство. Недостатком метода является необходимость присоединения каждого сетевого ресурса по отдельности.

Другой способ - это просмотр сетевых ресурсов в режиме "детали (details)". Самба сервер позволяет индицировать коментарии к каждому отдельному сетевому ресурсу. Достоинство этого способа в отсутствии недостака, который характерен для способа присоединения сетевых дисков. Никаких других действий, кроме просмотра доступных ресурсов, не требуется. Эта статья рассказывает о том, как правильно настроить самба сервер.

1. создайте директорию sambaservice на linux сервере, в которой будут храниться вспомогательные файлы.

cd /home | mkdir sambaservice

cd /home/sambaservice

2. создайте исполняемый файл diskinfo.sh, который принимает имя жесткого диска, как параметр, и возвращает строку: "свободное место на диске [размер диска]"

#! /bin/bash

#

# returns disk usage.

# June 2010 by Konstantyn Spasokukotskiy www.spasokukotskiy.info

#

# execution example: ./diskinfo.sh hda3

# output example: 134G [548G]

DISC=$1

SIZE=`df -h | grep $DISC | awk ''{print $2}''`

FREE=`df -h | grep $DISC | awk ''{print $4}''`

echo $FREE "["$SIZE"]"

3. создайте исполняемый файл cron-task-diskusage-samba, который будет создавать динамические строки кометариев для отдельных дисков файловой системы. Строка коментариев состоит из ключевого выражения " comment =". После этого выражения идет любая текстовая строка. В данном случае, строка будет динамически отражать свободное место на диске, размер диска и стационарный коментарий, который описывает содержание самба ресурса.

вам нужно модифицировать этот файл под конкретные условия вашей дисковой системы и предоставляемых самба ресурсов. В данном примере имеется дисковая система:

sda (sda1 - ubuntu linux 8GB raid, sda2 - swap 1GB, sda3 - /home 268G)

sdb (sdb1 - ubuntu linux 8GB raid, sdb3 - swap 1GB, sda3 - /home/share 548G)

sdc (sdc1 - /home/mldonkey 980G, sdc2 - /home/data 346G)

#! /bin/bash

#

# returns disk usage that is formated for smb.conf comment string

# June 2010 by Konstantyn Spasokukotskiy www.spasokukotskiy.info

#

# run as chron task as frequently as you need (but not more often) to update disk usage

# change the following variables to fit for your infrastructure:

HOME=sda3

COMMENTHOME="here is your network resource description"

SHARE=sdb3

COMMENTSHARE="here is your network resource description"

TORRENT=sdc1

COMMENTTORRENT="here is your network resource description"

# don''t touch these paramenters unless your know what you are doing

DIR=/home/sambaservice/

SIZE=diskinfo.sh

SIZEFILE=.size

STRING="comment = "

# execution code

echo $STRING `$DIR$SIZE $HOME` $COMMENTHOME > $DIR$HOME$SIZEFILE

echo $STRING `$DIR$SIZE $SHARE` $COMMENTSHARE> $DIR$SHARE$SIZEFILE

echo $STRING `$DIR$SIZE $TORRENT` $COMMENTSHARE> $DIR$TORRENT$SIZEFILE

service samba restart

При исполнении представленной версии программы будут созданы три файла с следующим содержанием:

sda3.size

comment = 173G [268G] here is your network resource description

sdb3.size

comment = 134G [548G] here is your network resource description

sdc1.size

comment = 289G [346G] here is your network resource description

Содержание файлов будет изменяться по мере того, как заполнение дисков изменится.

4. Разрешите исполнение программ в п.2 и п.3 любому пользователю.

chmod 0755 diskinfo.ch cron-task-diskusage-samba

5. Измените настройки самба сервера в файле smb.conf. В стстемах ubuntu linux файл настроек находится по адресу /etc/samba/smb.conf В данном примере из всех доступных дисковых ресурсов только три будут доступны через сеть. Ресурс sda3 предоставляет защищенное место для отдельных пользователей. Ресурс sdb3 предоставляется, как share, доступный всем пользователям без исключения. Ресурс sdc1 предоставляется, как downlads, доступный только зарегестрированным пользователям. Вам нужно модифицировать настройки, которые здесь представленны, как пример. Желательно, чтобы настройки соответсвовали вашей системе и в строке include = ... ссылались на файлы, которые действительно сгенерированы в программой в п.3.

[homes]

comment = user directories. This comment is shown if dynamic comment doesn''t load

include = /home/sambaservice/sdb3.size

browsable = no

read only = no

create mask = 0700

directory mask = 0700

valid users = %S

[storage]

comment = files and programs. This comment is shown if dynamic comment doesn''t load

include = /home/sambaservice/sda3.size

path = /home/share

read only = no

guest ok = yes

[downloads]

comment = fresh and shared torrent files. This comment is shown if dynamic comment doesn''t load

include = /home/sambaservice/sdc1.size

path = /home/mldonkey/incoming

read only = no

6. Поместите программу в список планировщика выполнения задач. Если вы хотите обновлять данные о заполнении дисков ежедневно, то в системах ubuntu linux поместите файлы в /etc/cron.daily. Выполните это следующей командой:

cp /home/sambaservice/cron-task-diskusage-samba /stc/cron.daily/diskusage-samba

7. Проверте работоспособность системы. Запустите программу следующей командой:

/home/sambaservice/cron-task-diskusage-samba

Найдите самба ресурсы, пройдя по адресу: windows -> network -> (microsoft network -> ваш domain/workgroup) -> имя вашего сервера. Включите детальный показ в окне. Если программирование было осуществлено без ошибок вы увидете список ресурсов наподобие такого: