`

Windows访问Linux共享文件(夹),Linux中Samba的安装

 
阅读更多
samba安装:
检查安装了samba:rpm -qa | grep samba

在光盘(redhat系统安装盘)中查找samba的rpm文件路径:[root@yangfan /]# find -name samba*

按顺序安装samba的rpm文件:
[root@yangfan Packages]# rpm -ivh samba-3.5.10-125.el6.x86_64.rpm
warning: samba-3.5.10-125.el6.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY
error: Failed dependencies:
samba-common = 0:3.5.10-125.el6 is needed by samba-0:3.5.10-125.el6.x86_64
[root@yangfan Packages]# find -name samba*
find: paths must precede expression: samba4-libs-4.0.0-23.alpha11.el6.i686.rpm
Usage: find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...] [expression]
[root@yangfan Packages]# rpm -ivh samba-common-3.5.10-125.el6.x86_64.rpm
warning: samba-common-3.5.10-125.el6.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY
Preparing...                ########################################### [100%]
   1:samba-common           ########################################### [100%]
[root@yangfan Packages]# rpm -ivh samba-3.5.10-125.el6.x86_64.rpm
warning: samba-3.5.10-125.el6.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY
Preparing...                ########################################### [100%]
   1:samba                  ########################################### [100%]
[root@yangfan Packages]# rpm -ivh samba-client-3.5.10-125.el6.x86_64.rpm
warning: samba-client-3.5.10-125.el6.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY
Preparing...                ########################################### [100%]
   1:samba-client           ########################################### [100%]
[root@yangfan Packages]#




启动samba:service smb start

重行运行Linux Samba:终端运行命令 service smb restart

关闭samba:
[root@yangfan /]# service smb stop
Shutting down SMB services:                                [  OK  ]

关闭防火墙:iptables -F

添加一个samba账号://注意bill必须是已经存在的linux账号
[root@yangfan /]# smbpasswd -a bill
New SMB password:billsmb
Retype new SMB password:billsmb
Added user bill.

不能在共享目录创建文件解决方法:
/etc/selinux/config中修改
#SELINUX=enforcing
SELINUX=disabled



Windows访问Linux共享文件(夹):

package d20130401;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.MalformedURLException;
import java.net.UnknownHostException;
import java.util.Date;

import org.omg.PortableInterceptor.SUCCESSFUL;

import jcifs.smb.SmbException;
import jcifs.smb.SmbFile;
import jcifs.smb.SmbFileInputStream;
import jcifs.smb.SmbFileOutputStream;
//jar package can get from attachment file

public class RemoteShareFile {
  public static void main(String[] args) {
    String smbUrls = "smb://username:password@computername/opt/webhost/pn/etc/pn.conf";
    smbUrls = "smb://ASIAPACIFIC;username:password@computerIp/share/";//GetComputerAddress/PnSnapshotPerformanceTest
    smbUrls = "smb://bill:billsmb@computerIp/bill_share/GetComputerAddress.java";
    
    String localPath = "C:/bill/testShare";
    localPath = "C:/bill/testShare";
    //File file = readFromSmb(smbMachine, localPath);
    
    //readFileFromSever(smbUrls, localPath);
    
    Date startDate = new Date();
    smbUrls = "smb://bill:billsmb@16.187.25.106/bill_share";
    localPath = "C:/bill/share/RemoteShareFile.java";
    boolean writeFileSuccess = writeFileToServer(smbUrls, localPath);
    System.out.println("Write file to server is success? " + writeFileSuccess);
    Date endDate = new Date();
    long useMillisecond = endDate.getTime() - startDate.getTime();
    System.out.println("Use millisecond: " + useMillisecond);
    System.out.println("Use second: " + useMillisecond/1000);
    
    System.out.println();
    startDate = new Date();
    //smbUrls = "smb://bill:billsmb@16.187.25.106/bill_share";
    localPath = "C:/bill/share/XXXXXX_XXXXXXXXXX_2013_03_26_23_04_08_951.xml";
    writeFileSuccess = writeFileToServer(smbUrls, localPath);
    System.out.println("Write file to server is success? " + writeFileSuccess);
    endDate = new Date();
    useMillisecond = endDate.getTime() - startDate.getTime();
    System.out.println("Use millisecond: " + useMillisecond);
    System.out.println("Use second: " + useMillisecond/1000);
    
    System.out.println("\n-------- Create folder -----------");
    startDate = new Date();
    //smbUrls = "smb://bill:billsmb@16.187.25.106/bill_share";
    localPath = "C:/bill/share/test";
    writeFileSuccess = writeFileToServer(smbUrls, localPath);
    System.out.println("Write file to server is success? " + writeFileSuccess);
    endDate = new Date();
    useMillisecond = endDate.getTime() - startDate.getTime();
    System.out.println("Use millisecond: " + useMillisecond);
    System.out.println("Use second: " + useMillisecond/1000);
  }
  
  private static boolean writeFileToServer(String smbUrls, String localPath) {
    Boolean writeFileSuccess = null;
    InputStream is = null;
    OutputStream os = null;
    try {
      File localFile = new File(localPath);
      String fileName = localFile.getName();
      System.out.println(fileName + " is a directory? " + localFile.isDirectory());
      System.out.println(fileName + "'s length is: " + localFile.length());
      /*SmbFile smbFile = null;
      if (localFile.isDirectory()) {
        smbFile = new SmbFile(smbUrls + "/" + fileName + "/");
      } else {
        smbFile = new SmbFile(smbUrls + "/" + fileName);
      }*/
      SmbFile smbFile = new SmbFile(smbUrls + "/" + fileName);
      if (localFile.isDirectory()) {
        if (!smbFile.exists()) {
          smbFile.mkdir();
          System.out.println("Create romote folder successfully: " + smbFile.getURL());
        } else {
          System.out.println("Create romote folder successfully: " + smbFile.getURL());
        }
        return true;
      }
      
      is = new BufferedInputStream(new FileInputStream(localFile));
      os = new BufferedOutputStream(new SmbFileOutputStream(smbFile));
      
      byte[] buffer = new byte[1024];
      int n;
      while((n = is.read(buffer)) != -1) {
        os.write(buffer, 0, n);
      }
      
      writeFileSuccess = true;
    } catch (MalformedURLException e) {
      System.err.println("------------- Create samba file fail ------------------");
      e.printStackTrace();
    } catch (FileNotFoundException e) {
      System.err.println("------------- File not found ------------------");
      e.printStackTrace();
    } catch (SmbException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    } catch (UnknownHostException e) {
      System.err.println("------------- Samba file not found ------------------");
      e.printStackTrace();
    } catch (IOException e) {
      System.err.println("------------- Read file fail ------------------");
      e.printStackTrace();
    } finally {
      if (writeFileSuccess == null) {
        writeFileSuccess = false;
      }
      if (is != null) {
        try {
          is.close();
        } catch (IOException e) {
          System.err.println("------------- Close input stream fail ------------------");
        }
      }
      
      if (os != null) {
        try {
          os.close();
        } catch (IOException e) {
          System.err.println("------------- Close output stream fail ------------------");
        }
      }
    }
    
    return writeFileSuccess;
  }

  private static File readFileFromSever(String smbUrls, String localPath) {
    File localFile = null;
    InputStream is = null;
    OutputStream os = null;
    
    try {
      SmbFile smbFile = new SmbFile(smbUrls);
      System.out.println("smbFile is directory: " + smbFile.isDirectory());
      /*if (smbFile.isDirectory()) {
        String[] smbFileNameArr = smbFile.list();
        System.out.println("----------- smbFile.list() -----------");
        for (String per : smbFileNameArr) {
          System.out.println(per);
        }
        
        SmbFile[] smbFileArr = smbFile.listFiles();
        System.out.println("----------- smbFile.list() -----------");
        for (SmbFile per : smbFileArr) {
          System.out.println(per.getName());
        }
      }
      
      if (true) {
        return null;
      }*/
      
      String fileName = smbFile.getName();
      is = new BufferedInputStream(new SmbFileInputStream(smbFile));
      
      localFile = new File(localPath + File.separator + fileName);
      os = new BufferedOutputStream(new FileOutputStream(localFile));
      
      byte[] buffer = new byte[1024];
      int n;
      while((n = is.read(buffer)) != -1) {
        os.write(buffer, 0, n);
      }
      
      /*byte[] buffer = new byte[smbFile.getContentLength()];
      is.read(buffer);
      os.write(buffer);*/
      
      System.out.println("-------------- end -------------");
    } catch (MalformedURLException e) {
      System.err.println("------------- Create sever message block file fail ------------------");
      e.printStackTrace();
    } catch (SmbException e) {
      System.err.println("------------- Create sever message block file input stream fail ------------------");
      e.printStackTrace();
    } catch (UnknownHostException e) {
      System.err.println("------------- Create sever message block file input stream fail ------------------");
      e.printStackTrace();
    } catch (FileNotFoundException e) {
      System.err.println("------------- Create local file output stream fail ------------------");
      e.printStackTrace();
    } catch (IOException e) {
      System.err.println("------------- Read remote file fail ------------------");
      e.printStackTrace();
    } finally {
      if (is != null) {
        try {
          is.close();
        } catch (IOException e) {
          System.err.println("------------- Close input stream fail ------------------");
        }
      }
      
      if (os != null) {
        try {
          os.close();
        } catch (IOException e) {
          System.err.println("------------- Close output stream fail ------------------");
        }
      }
    }
    
    return null;
  }

  public static File readFromSmb(String smbMachine, String localpath) {
    File localfile = null;
    InputStream bis = null;
    OutputStream bos = null;
    try {
      SmbFile rmifile = new SmbFile(smbMachine);
      String filename = rmifile.getName();
      bis = new BufferedInputStream(new SmbFileInputStream(rmifile));
      localfile = new File(localpath + File.separator + filename);
      bos = new BufferedOutputStream(new FileOutputStream(localfile));
      int length = rmifile.getContentLength();
      byte[] buffer = new byte[length];
      Date date = new Date();
      bis.read(buffer);
      bos.write(buffer);
      Date end = new Date();
      int time = (int) ((end.getTime() - date.getTime()) / 1000);
      if (time > 0)
        System.out.println(time + ", " + length / time / 1024);
    } catch (Exception e) {
      System.out.println(e.getMessage());
    } finally {
      try {
        bos.close();
        bis.close();
      } catch (IOException e) {
        e.printStackTrace();
      }
    }
    return localfile;
  }
}




  • 大小: 82.4 KB
分享到:
评论

相关推荐

    Linux与Windows 共享文件Samba

    **Linux与Windows共享文件Samba详解** 在信息技术领域,跨平台文件共享是一个常见的需求,特别是在混合操作系统环境中,如Linux和Windows。Samba是解决这个问题的关键工具,它允许Linux系统与Windows系统之间无缝地...

    一步一学Linux与Windows_共享文件Samba

    ### Linux与Windows共享文件:Samba的深度解析 在跨平台网络环境中,实现不同操作系统间的文件共享是一项常见的需求。Samba作为一款开源软件,扮演着Linux与Windows系统间桥梁的角色,使得两者之间的文件共享变得...

    在Windows与Linux下Samba共享文件夹以及映射的详细使用说明

    在Windows和Linux操作系统中可以使用Samba来访问共享资源。 1. Linux系统下访问远程共享资源 使用smbclient命令来访问远程共享资源,例如: smbclient //192.168.16.249/test001 -U user001 2. Windows系统下...

    LINUX中SAMBA详细安装和应用

    * 文件共享:Samba 服务允许 Linux 和 Windows 计算机之间共享文件。 * 打印机共享:Samba 服务允许 Linux 和 Windows 计算机之间共享打印机。 * 身份验证:Samba 服务提供了一个安全的身份验证机制,保护 Linux 和 ...

    Linux 文件共享 samba 配置

    在使用 samba 服务时,需要注意防火墙的问题,防火墙可能会阻止共享文件的访问。如果不能访问共享文件,需要停止防火墙服务或配置防火墙规则来允许共享文件的访问。 samba 服务是 Linux 系统中实现文件共享的重要...

    Linux与Windows 通过samba互访共享资源

    对于Windows用户来说,访问Linux共享就像访问其他Windows机器一样简单,通过网上邻居即可。而对于Linux用户,他们需要使用`mount`命令将Windows的共享文件挂载到本地目录。 在Linux系统(如Fedora8)上安装Samba...

    一步一学Linux与Windows 共享文件Samba

    Samba是一个开放源代码的软件,它实现了Microsoft的SMB(Server Message Block)协议,使得Linux系统能够与Windows系统无缝共享文件和打印服务。Samba不仅支持Windows与Linux之间的文件共享,同时也支持Linux系统间...

    linux下Samba服务器安装

    linux下samba安装rpm包,其中包含: samba-2.2.7a-7.9.0.i386.rpm, samba-client-2.2.7a-7.9.0.i386.rpm, samba-common-2.2.7a-7.9.0.i386.rpm 全套三个安装包... 已经做好了镜像文件,直接加载即可。

    虚拟机中的Linux与Windows文件共享互通--samba软件的配置.pdf

    Samba服务器可以充当共享服务器,同时也可以作为客户机来访问其他网络中的Windows共享文件系统或其他Linux的Samba服务器。 二、安装Samba 在Red Hat Linux 9.0中,可以使用rpm命令来安装Samba。首先,需要验证机器...

    访问Linux下的共享文件

    本文档介绍如何让 Windows 用户通过以太网访问 Linux 下的共享文件,需要开启 Samba 服务器,并详细介绍了 Samba 服务器的配置步骤。 一、Samba 服务器的配置 Samba 服务器是 Linux 下的一个开源软件,可以让 ...

    samba windows linux ubuntu 共享

    Samba不仅为Linux和Unix系统提供了与Windows网络无缝集成的能力,还允许不同操作系统的用户共享文件、打印机和其他资源。本文将深入探讨Samba的工作原理、配置步骤以及在Windows、Linux和Ubuntu环境中实现共享的具体...

    虚拟机LINUX与主机WINDOWS文件共享

    在 LINUX 机子上共享文件给 WINDOWS 机子可以使用三种方法: 1. 使用 smbmount 命令 可以使用 smbmount 命令将 WINDOWS 机子的共享目录挂载到 LINUX 机子上。例如: #smbmount //10.0.0.10/music /home/user/...

    利用Samba实现Linux和Windows文件共享 组建Samba文件服务器.pdf

    2.高效:Samba可以提供高效的文件共享服务,使得用户可以快速地访问和共享文件。 3.安全:Samba具有身份认证功能,可以区分不同的用户权限,确保文件的安全。 4.灵活:Samba可以根据不同的需求进行配置,提供灵活的...

    虚拟机中的Linux与Windows文件共享互通--samba软件的配置借鉴.pdf

    虚拟机中的Linux与Windows文件共享互通--samba软件的配置借鉴 本文主要介绍了使用Samba软件来实现虚拟机中的Linux和Windows文件共享互通的配置过程。Samba是一种网络服务器,用于Linux和Windows之间的文件共享。它...

    Windows玩转Linux文件共享.pdf

    这样,Windows用户无需用户名和密码就能直接访问Linux共享文件。 通过这些步骤,Windows用户能像访问本地文件一样方便地访问Linux服务器上的文件,有效地促进了Windows和Linux环境之间的数据交换和协作,这对于混合...

    Samba服务器配置及访问Samba共享

    Samba服务器是一种基于SMB/CIFS协议的文件和打印机共享服务器,主要用于Linux和Windows之间的资源共享。下面是Samba服务器配置及访问Samba共享的知识点总结: 一、Samba服务器安装 * 使用rpm命令安装Samba服务器...

    Linux下的文件共享服务器Samba安装文件及其配置说明 samba-4.14.5.tar

    在Linux环境中,Samba是一个非常重要的工具,它允许Linux系统与Windows系统之间进行文件和打印服务的共享。本文将详细讲解如何在CentOS系统上安装Samba 4.14.5并进行配置。 首先,我们需要了解Samba的核心概念。...

    Linux与Windows 共享文件Samba.doc

    Linux 与 Windows 之间的文件共享通常通过 Samba 服务实现,Samba 是一个开源软件,它使得 Linux 系统能够无缝地与 Windows 网络环境集成,允许 Windows 用户访问 Linux 服务器上的文件和打印机。Samba 实现了微软的...

Global site tag (gtag.js) - Google Analytics