庞大资源库的计算机教程网站!
设为首页
加入收藏
总编信箱
投稿或申请专栏请先 [登 陆]
首页 操作系统 程序设计 图形图像 媒体动画 机械电子 WEB开发 数 据 库 办公系列 路由技术 网络原理 网络应用
认证考试 安全技术
首页>操作系统>Linux>网络管理>正文
资料搜索
Google搜索
Google
返回上级列表

推荐文章

快速保存网页中所有图片的方法
Windows中让光驱巧妙“隐身”技
防范非法用户入侵Win 2000/XP系
两款比较典型的ASP木马防范方法
有关表格边框的css语法整理
Windows XP中可以被禁用的服务
SQL Server导出导入数据方法
Javascript所有对象的属性的获
网页(HTML)中的特殊字符
与篮球共舞,尽显模式本色
QQ病毒的手工清除方法
Photoshop为极品美女打造性感睫
天衣无缝:IIS与PHP水火也相容
SQL Server存储过程编写和优化

SMB的扩展应用

 作者:本站收集   日期:2005-4-14
字号选择〖 〗/ 双击滚屏 单击停止   
在Linux风行的今天,与Windows机器相互共享文件已经是非常普遍的应用了,关于samba的设置的文档也相当的多,本站也有不少了。不过在使用它的高级功能方面还是比较欠缺的,这类文档是非常稀有的,而且只有英文版的,为了方便国内的Linux用户,我将这些文档整理一下,翻译过来,并结合自己一些经验,为大家提供一些帮助。
注:这篇文章并不是一篇关于如何配置samba的基础文档,而是需要阅读者有一定的Linux使用经验,熟悉脚本语言,并且对samba有一定的使用经验。主要是针对于一些企业的Linux网管,或比较有经验的Linux爱好者。
这篇文章也其说是文章,不如说是一个技巧提示,但是我个人觉得它意义非常大,特别是对于大中型企业的用户来讲,它可能非常重要。
它主要描述了如果在Linux下使用samba来为使用Windows系统的机器作备份,并且描述了如何跨子网共享samba。

1、将Windows机器备分到一台Linux主机上
Adam Neat(adamneat@ipax.com.au),向我们提供了以下一段代码,它描述了如何使用smbclient软件包将windows机器备份到Linux主机上。Adam说它可以用来备份windows 3.x和NT机器到一台Linux的磁带机上。
另一段代码,是Dan Tager (dtager@marsala.com),提供的,Dan的脚本是通过rsh来备份Unix机器,尽管它可以修改成ssh以便使其更简单些。

在下面这个脚本中,字符串“agnea1”是作备份工作的Linux主机的一个用户名。
#!/bin/bash
clear
echo Initialising ...
checkdate=`date | awk '{print $1}'`

if [ -f "~agnea1/backup-dir/backup-data" ]; then
echo "ERROR: No config file for today!"
echo "FATAL!"
exit 1
fi

if [ -d "~agnea1/backup-dir/temp" ]; then
echo "ERROR: No tempoary directory found!"
echo
echo "Attempting to create"
cd ~agnea1
cd backup-dir
mkdir temp
echo "Directory Made - temp"
fi

if [ "$1" = "" ]; then
echo "ERROR: enter in a machine name (ie: cdwriter)"
exit 1
fi

if [ "$2" = "" ]; then
echo "ERROR: enter in a SMB (Lan Manager) Resource (ie: work)"
exit 1
fi

if [ "$3" = "" ]; then
echo "ERROR: enter in an IP address for $1 (ie:
130.xxx.xxx.52)" exit 1
fi
######################################################################
# Main Section
#
######################################################################

cd ~agnea1/backup-dir/temp
rm -r ~agnea1/backup-dir/temp/*
cd ~agnea1/backup-dir/

case "$checkdate"
in
Mon)
echo "Backuping for Monday"
cat backup-data | /usr/local/samba/bin/smbclient
$1$2 -I$3 -N echo "Complete"
if [ -d "~agnea1/backup-dir/Monday" ]; then
echo "Directory Monday Not found ...
making" mkdir
~agnea1/backup-dir/Monday
fi

echo "Archiving ..."
cd ~agnea1/backup-dir/temp
tar -cf monday.tar * echo "done ..."
rm ~agnea1/backup-dir/Monday/monday.tar
mv monday.tar ~agnea1/backup-dir/Monday
;;


Tue)
echo "Backuping for Tuesday"
cat backup-data | /usr/local/samba/bin/smbclient
$1$2 -I$3 -N echo "Complete"

if [ -d "~agnea1/backup-dir/Tuesday" ]; then
echo "Directory Tuesday Not found ...
making" mkdir
~agnea1/backup-dir/Tuesday
fi
echo "Archiving ..."
cd ~agnea1/backup-dir/temp
tar -cf tuesday.tar *
echo "done ..."
rm ~agnea1/backup-dir/Tuesday/tuesday.tar
mv tuesday.tar ~agnea1/backup-dir/Tuesday
;;

Wed)
echo "Backuping for Wednesday"
cat backup-data | /usr/local/samba/bin/smbclient
$1$2 -I$3 -N echo "Complete"

if [ -d "~agnea1/backup-dir/Wednesday" ]; then
echo "Directory Wednesday Not found
... making" mkdir
~agnea1/backup-dir/Wednesday
fi
echo "Archiving ..."
cd ~agnea1/backup-dir/temp
tar -cf wednesday.tar *
echo "done ..."
rm ~agnea1/backup-dir/Wednesday/wednesday.tar
mv wednesday.tar ~agnea1/backup-dir/Wednesday
;;

Thu)
echo "Backuping for Thrusday"
cat backup-data | /usr/local/samba/bin/smbclient
$1$2 -I$3 -N echo "Complete"

if [ -d "~agnea1/backup-dir/Thursday" ]; then
echo "Directory Thrusday Not found ...
making" mkdir
~agnea1/backup-dir/Thursday
fi
echo "Archiving ..."
cd ~agnea1/backup-dir/temp
tar -cf thursday.tar *
echo "done ..."
rm ~agnea1/backup-dir/Thursday/thursday.tar
mv thursday.tar ~agnea1/backup-dir/Thursday
;;


Fri)
echo "Backuping for Friday"
cat backup-data | /usr/local/samba/bin/smbclient
$1$2 -I$3 -N echo "Complete"

if [ -d "~agnea1/backup-dir/Friday" ]; then
echo "Directory Friday Not found ...
making" mkdir
~agnea1/backup-dir/Friday
fi
echo "Archiving ..."
cd ~agnea1/backup-dir/temp
tar -cf friday.tar *
echo "done ..."
rm ~agnea1/backup-dir/Friday/friday.tar
mv friday.tar ~agnea1/backup-dir/Friday
;;

*)
echo "FATAL ERROR: Unknown variable passed for day"
exit 1;;

esac
###########
______________________________________________________________________

这里是Dan的备份脚本:
______________________________________________________________________
#!/bin/bash

BACKDIR=3D/backup
WINCMD=3D/usr/bin/smbclient

function CopyWinHost(){

# tars and gzips "windows shares" to a local directory using samba's
# smbclient
# argument 1 is the remote host window's host name
# argument 2 is the share name to be backed up

echo $1,$2,$3
REMOTE=3D$1
SHARE=3D$2
DEST=3D$3

# create a tarred gzip file using samba to copy direct from a
# windows pc
# 12345 is a password. Needs some password even if not defined on
# remote system
$WINCMD $REMOTE$SHARE 12345 -Tc -|gzip > $DEST
echo `date`": Done backing up "$REMOTE" to "$DEST
echo
}

function CopyUnixHost(){

# tars and gzips a directory using rsh
# argument 1 is the name of the remote source host
# argument 2 is the full path to the remote source directory
# argument 3 is the name of the local tar-gzip file. day of week
# plus .tgz will be appended to argument 3

REMOTE=3D$1
SRC=3D$2
DEST=3D$3


if rsh $REMOTE tar -cf - $SRC |gzip > $DEST; then
echo `date`": Done backing up "$REMOTE":"$SRC" to "$DEST
else
echo `date`": Error backing up "$REMOTE":"$SRC" to "$DEST
fi

}

# $1: win=3Dbackup windows machine, unix=3Dbackup unix machine
case $1 in
win)
# $2=3D remote windows name, $3=3Dremote share name,
# $4=3Dlocal destination directory
CopyWinHost $2 $3 $4;;
unix)
# $2 =3D remote host, $3 =3D remote directory,
# $4 =3D destination name
CopyUnixHost $2 $3 $4;;
esac
______________________________________________________________________
以上两个文件都是针对于具体的机器而设计的,如果您准备对自己的机器也进行备份,那么请您安照您自己的机器的具体情况来修改这两个文件的一个,就可以使用了。

2、跨子网使用samba
许多大型企业有不同的子网,但是如何将另一个子网的内容被其它子网共享,是一个非常关键的问题,许多samba的用户在这里遇到许多麻烦,如果这点被解决了,那么可以使资源利用率大大提高。使企业的成本降低不少。
Andrew Tridgell声称SMB主机在通过有路由的网络共享时有一些问题。这是他的一些建议:
跨子网(例如,通过路由)资源浏览,你需要作以下事情。
1.所有希望被浏览的的计算机应该使用一个单个的WINS服务器(Samba或NT可以作到这点)
2.每个子网的master brower必须不是NT就是samba。(win9x不能正常地跨子网工作通讯)
3.你必须将所有子网的workgroup名字都设成一样的。这并不需要非常严格地遵守,但是这是保证成功的最简单的方式之一。如果你不能遵守这一条,那么你必须组织一种可以连接两个网络的方式,它可以由两种方式实现:
(1)每个browse master注意到在同一广播域中其它的borwse masters的workgroup的描述(2)每个非win9x的browse master要接触全部workgroup的DMB(常用的有:将主域控制器或一个samba服务器标记为domain master),并且周期性地交换browse 信息。
当然,其它用户指出,cisco的路由器可以通过一种方式被设置成解析SMB的交流,并允许浏览。它的建议是将SMB主机的路由接口设置成:
ip helper-address x.x.x.x
这里x.x.x.x是这台SMB服务器的IP地址。
上一篇:TCP/IP远程访问操作    下一篇:通用线程:Samba 简介 第一部分  
[发送给好友]  [关闭窗口]  [返回顶部]   转载请注明来源:www.it00.com   
特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
责任编辑: 原点 投稿作者: 本站收集
信息来源: 网络 录入时间: 2005-4-14
关于我们 - 广告服务 - 版权申明 - 网站地图 - 联系方式 - 总编信箱 - 会员投稿