电脑故障

位置:IT落伍者 >> 电脑故障 >> 浏览文章

SMB的扩展应用


发布日期:2022/1/16
 

在Linux风行的今天与Windows机器相互共享文件已经是非常普遍的应用了关于samba的设置的文档也相当的多本站也有不少了不过在使用它的高级功能方面还是比较欠缺的这类文档是非常稀有的而且只有英文版的为了方便国内的Linux用户我将这些文档整理一下翻译过来并结合自己一些经验为大家提供一些帮助

这篇文章并不是一篇关于如何配置samba的基础文档而是需要阅读者有一定的Linux使用经验熟悉脚本语言并且对samba有一定的使用经验主要是针对于一些企业的Linux网管或比较有经验的Linux爱好者

这篇文章也其说是文章不如说是一个技巧提示但是我个人觉得它意义非常大特别是对于大中型企业的用户来讲它可能非常重要

它主要描述了如果在Linux下使用samba来为使用Windows系统的机器作备份并且描述了如何跨子网共享samba

将Windows机器备分到一台Linux主机上

Adam Neat(au)向我们提供了以下一段代码它描述了如何使用smbclient软件包将windows机器备份到Linux主机上Adam说它可以用来备份windows x和NT机器到一台Linux的磁带机上

另一段代码是Dan Tager ()提供的Dan的脚本是通过rsh来备份Unix机器尽管它可以修改成ssh以便使其更简单些

在下面这个脚本中字符串agnea是作备份工作的Linux主机的一个用户名

#!/bin/bash

clear

echo Initialising

checkdate=`date | awk {print $}`

if [ f ~agnea/backupdir/backupdata ]; then

echo ERROR: No config file for today!

echo FATAL!

exit

fi

if [ d ~agnea/backupdir/temp ]; then

echo ERROR: No tempoary directory found!

echo

echo Attempting to create

cd ~agnea

cd backupdir

mkdir temp

echo Directory Made temp

fi

if [ $ = ]; then

echo ERROR: enter in a machine name (ie: cdwriter)

exit

fi

if [ $ = ]; then

echo ERROR: enter in a SMB (Lan Manager) Resource (ie: work)

exit

fi

if [ $ = ]; then

echo ERROR: enter in an IP address for $ (ie:

xxxxxx) exit

fi

#########################################################

# Main Section

#

#########################################################

cd ~agnea/backupdir/temp

rm r ~agnea/backupdir/temp/*

cd ~agnea/backupdir/

case $checkdate

in

Mon)

echo Backuping for Monday

cat backupdata | /usr/local/samba/bin/smbclient

$$ I$ N echo Complete

if [ d ~agnea/backupdir/Monday ]; then

echo Directory Monday Not found

making mkdir

~agnea/backupdir/Monday

fi

echo Archiving

cd ~agnea/backupdir/temp

tar cf mondaytar *echo done

rm ~agnea/backupdir/Monday/mondaytar

mv mondaytar ~agnea/backupdir/Monday

;;

Tue)

echo Backuping for Tuesday

cat backupdata | /usr/local/samba/bin/smbclient

$$ I$ N echo Complete

if [ d ~agnea/backupdir/Tuesday ]; then

echo Directory Tuesday Not found

making mkdir

~agnea/backupdir/Tuesday

fi

echo Archiving

cd ~agnea/backupdir/temp

tar cf tuesdaytar *

echo done

rm ~agnea/backupdir/Tuesday/tuesdaytar

mv tuesdaytar ~agnea/backupdir/Tuesday

;;

Wed)

echo Backuping for Wednesday

cat backupdata | /usr/local/samba/bin/smbclient

$$ I$ N echo Complete

if [ d ~agnea/backupdir/Wednesday ]; then

echo Directory Wednesday Not found

making mkdir

~agnea/backupdir/Wednesday

fi

echo Archiving

cd ~agnea/backupdir/temp

tar cf wednesdaytar *

echo done

rm ~agnea/backupdir/Wednesday/wednesdaytar

mv wednesdaytar ~agnea/backupdir/Wednesday

;;

Thu)

echo Backuping for Thrusday

cat backupdata | /usr/local/samba/bin/smbclient

$$ I$ N echo Complete

if [ d ~agnea/backupdir/Thursday ]; then

echo Directory Thrusday Not found

making mkdir

~agnea/backupdir/Thursday

fi

echo Archiving

cd ~agnea/backupdir/temp

tar cf thursdaytar *

echo done

rm ~agnea/backupdir/Thursday/thursdaytar

mv thursdaytar ~agnea/backupdir/Thursday

;;

Fri)

echo Backuping for Friday

cat backupdata | /usr/local/samba/bin/smbclient

$$ I$ N echo Complete

if [ d ~agnea/backupdir/Friday ]; then

echo Directory Friday Not found

making mkdir

~agnea/backupdir/Friday

fi

echo Archiving

cd ~agnea/backupdir/temp

tar cf fridaytar *

echo done

rm ~agnea/backupdir/Friday/fridaytar

mv fridaytar ~agnea/backupdir/Friday

;;

*)

echo FATAL ERROR: Unknown variable passed for day

exit ;;

esac

###########

______________________________________________________

这里是Dan的备份脚本

______________________________________________________

#!/bin/bash

BACKDIR=D/backup

WINCMD=D/usr/bin/smbclient

function CopyWinHost(){

# tars and gzips windows shares to a local directory using sambas

# smbclient

# argument is the remote host windows host name

# argument is the share name to be backed up

echo $$$

REMOTE=D$

SHARE=D$

DEST=D$

# create a tarred gzip file using samba to copy direct from a

# windows pc

# is a password Needs some password even if not defined on

# remote system

$WINCMD $REMOTE$SHARE Tc |gzip > $DEST

echo `date`: Done backing up $REMOTE to $DEST

echo

}

function CopyUnixHost(){

# tars and gzips a directory using rsh

# argument is the name of the remote source host

# argument is the full path to the remote source directory

# argument is the name of the local targzip file day of week

# plus tgz will be appended to argument

REMOTE=D$

SRC=D$

DEST=D$

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

}

# $: win=Dbackup windows machine unix=Dbackup unix machine

case $ in

win)

# $=D remote windows name $=Dremote share name

# $=Dlocal destination directory

CopyWinHost $ $ $;;

unix)

# $ =D remote host $ =D remote directory

# $ =D destination name

CopyUnixHost $ $ $;;

esac

以上两个文件都是针对于具体的机器而设计的如果您准备对自己的机器也进行备份那么请您安照您自己的机器的具体情况来修改这两个文件的一个就可以使用了

跨子网使用samba

许多大型企业有不同的子网但是如何将另一个子网的内容被其它子网共享是一个非常关键的问题许多samba的用户在这里遇到许多麻烦如果这点被解决了

上一篇:如何在squid中通过URL进行访问控制

下一篇:关于OCP的几点看法