我正在读取一个文件,我要么读取一行数据(1600个连续读取17个字节)或一列数据(1600个读取17个字节,由1600*17 = 27,200个字节分隔).该文件位于本地驱动器或远程驱动器上.我做了10次读取,所以我希望在每种情况下读取272,000字节的数据.
在当地的车道上,我看到了我的期望.在按顺序阅读的远程驱动器上,我也看到了我的期望,但在读取列时,我看到正在进行大量的额外读取.它们长度为32,768字节,似乎没有使用,但它们使读取的数据量从272,000字节跳到79 MB到106 MB.以下是使用Process Monitor的输出:
1:39:39.4624488 PM DiskSpeedTest.exe 89628 ReadFile \\BCCDC01\BCC-raid3\SeisWareInc Temp Dir\BPepers_Temp\Projects\PT_4\Horizons\BaseName3D_1\RR_AP SUCCESS Offset: 9,390,069, Length: 17 1:39:39.4624639 PM DiskSpeedTest.exe 89628 FASTIO_CHECK_IF_POSSIBLE \\BCCDC01\BCC-raid3\SeisWareInc Temp Dir\BPepers_Temp\Projects\PT_4\Horizons\BaseName3D_1\RR_AP SUCCESS Operation: Read, Offset: 9,390,069, Length: 17 1:39:39.4624838 PM DiskSpeedTest.exe 89628 ReadFile \\BCCDC01\BCC-raid3\SeisWareInc Temp Dir\BPepers_Temp\Projects\PT_4\Horizons\BaseName3D_1\RR_AP SUCCESS Offset: 9,388,032, Length: 32,768, I/O Flags: Non-cached, Paging I/O, Synchronous Paging I/O, Priority: Normal 1:39:39.4633839 PM DiskSpeedTest.exe 89628 ReadFile \\BCCDC01\BCC-raid3\SeisWareInc Temp Dir\BPepers_Temp\Projects\PT_4\Horizons\BaseName3D_1\RR_AP SUCCESS Offset: 9,417,269, Length: 17 1:39:39.4634002 PM DiskSpeedTest.exe 89628 FASTIO_CHECK_IF_POSSIBLE \\BCCDC01\BCC-raid3\SeisWareInc Temp Dir\BPepers_Temp\Projects\PT_4\Horizons\BaseName3D_1\RR_AP SUCCESS …
有人可以帮我将文件从共享文件夹复制到本地驱动器吗?我的代码是:
import jcifs.smb.NtlmPasswordAuthentication;
import jcifs.smb.SmbFile;
import jcifs.smb.SmbFileInputStream;
import jcifs.smb.SmbFileOutputStream;;
public class smb {
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
String urlToBackUpFile = "smb://ip/backup$/test.txt";
System.out.println("smb folder of source file" + urlToBackUpFile);
NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication(null, "login", "pass");
SmbFile dir = new SmbFile(urlToBackUpFile, auth);
System.out.println(dir.getDate());
SmbFile dest = new SmbFile ("C:/SQLRESTORESTAGE/v2.bak");
dir.copyTo(dest);
}
}
Run Code Online (Sandbox Code Playgroud)
不复制文件文件.我收到一条消息"无法连接到服务器",但程序显示源文件的dir.getDate()(以及文件名和长度).所以我认为目标文件夹的问题(C:/ SQLRESTORESTAGE /).另外,我只能阅读源文件.你能帮我修改代码或建议吗?谢谢.
我刚刚安装了Ubuntu 12.10,我试图将文件夹挂载到Ubuntu系统.所以我用过:
sudo smbmount <folder> /path/to/my/folder -ouser=<my id>, dom=<my dom>
Run Code Online (Sandbox Code Playgroud)
但是没有找到smbmount ...我现在拥有的只是cifs-utils.
上面的命令适用于Ubuntu 12.04,但不适用于12.10.
任何提示?
Thx提前:)
我正在编写一个.Net应用程序来在linux和windows之间传输文件.我使用mono来实现平台独立性.
我使用https://code.google.com/p/cifsclient/作为参考(感谢Jordi Martin).他令人敬畏的解决方案类似于我想要实现的目标.
我很难将文件从Windows共享(文件驻留在这里并与"EVERYONE"共享)传输到linux盒子(我的应用程序在单声道上运行)
解决问题的一种方法是在linux上安装共享的Windows文件夹.不幸的是,我没有root凭据,因此安装很困难. 第二种方法是,使用auth令牌(使用Windows凭据初始化为smbclient_init)将文件URL依次更改为smb:// fileSharePath.尽管令牌具有适当的信誉,但后续访问请求仍然失败.第三种方法是在文件共享路径前添加"net use"后缀为赢取信用,但这也是一种贬低.http://social.msdn.microsoft.com/Forums/vstudio/en-US/03bf0cf2-be80-43a4-870c-83727dee1c63/access-a-samba-share-via-c?forum=csharpgeneral
总而言之,我没有Windows共享的用户名/密码或运行我的应用程序的linux机器的根信誉.我没有空间服务即.ftp,http等正在运行.有没有办法覆盖从linux盒子传输文件到Windows文件共享的场景,反之亦然?
任何帮助将不胜感激,我已经摆弄了一个星期,但没有找到一个很好的解决方案.
提前致谢,
Shoeb
给定UNC路径\\server\share,是否有任何方法可以使用Win32 API确定本地和远程计算机是使用SMB还是SMB2进行连接?
当我从 Synology NAS 装载 SMB 共享文件夹时,我遇到了一个小问题。我想挂载一个具有权限的共享文件夹:git:root 700
但是挂载的文件夹始终将权限设置为 777(即使在 chmod 700 之后也没有错误)
在我的/etc/fstab我用这一行:
#uid=999 ---> git user
//server/folder /mnt/artifacts cifs username=windowsUser,password=xxxxx,gid=0,uid=999,file_mode=0700,dir_mode=0700,iocharset=utf8 0 0
Run Code Online (Sandbox Code Playgroud)
你知道为什么我不能将我的权限设置为 700 吗?我做错了吗?有什么蠢事?
在此先感谢您的帮助 ;)
我正在尝试创建一个简单的 Docker 主机来尝试将容器用于某些 .net 项目。
我已经设置了一个 Windows Server 1803 主机并使用 powershell 安装了 Docker EE,它作为服务正确运行。
我想使用自 1709 年以来可用的新“SMB 全局映射”功能来映射我的域上的 samba 共享并在容器中使用它,而无需求助于 gMSA 或其他技巧,我希望它在重新启动时使用 docker 自动挂载和启动容器重新启动策略,就好像它们是 Windows 服务一样。
我运行这些命令,一切正常
$creds = Get-Credential
New-SmbGlobalMapping -RemotePath \\contosofileserver\share1 -Credential $creds -LocalPath G:
docker run -v G:/:G: -it test cmd.exe
Run Code Online (Sandbox Code Playgroud)
但是在主机重新启动后,G: 不再映射,因此我无法理想地将容器置于自动启动状态。我猜这是因为凭证没有在任何地方持久化,但即使在此之后,我怀疑 powershell 命令会使任何东西保持原样,也因为它缺少标准 New-SmbMapping 命令行开关的 -Persistent 参数。
我正在尝试用 Java 为 Samba 客户端编写一些测试,并且需要找到一个可以创建模拟 Samba 服务器的框架。Mock FTP Server与 FTP 协议类似。
到目前为止,我只能找到模拟 Samba 库的服务,例如JCIFS,但找不到 Samba 服务器。是否有可用于模拟 Samba 服务器的框架?
任何帮助或建议将不胜感激。
我在 Windows Server 2012 上有一个 dfs 共享。我可以在 Windows 文件资源管理器中打开共享并从另一个系统读取文件,路径如下:\\dfsserver\usernamespace\Tom\go.png。但是,通过https://github.com/hirochachacha/go-smb2使用 golang 的 smb2 包,我得到一个错误:
响应错误:联系的服务器不支持 DFS 命名空间的指示部分
但是,如果我尝试使用实际共享路径\\dfsserver\public share\Tom\go.png打开该文件,则代码可以正常工作。所以问题是我不知道运行时的实际路径,并且我希望能够使用 DFS 提供的路径打开文件。
难道是DFS在smb2上不能正常工作吗?或者其他一些问题。预先感谢您的评论。
func main(){
// actualPath := `\\dfsserver\public share\Tom\go.png`
// dfsPath := `\\dfsserver\usernamespace\Tom\go.png`
conn, err := net.Dial("tcp", fmt.Sprintf("%s:%s", "dfsserver", "445"))
if err != nil {
fmt.Println(err)
}
defer conn.Close()
dial := &smb2.Dialer{
Initiator: &smb2.NTLMInitiator{
User: "user",
Password: "password",
Domain: "dfsserver",
},
}
session, err := dial.Dial(conn)
if err != nil {
fmt.Println(err)
}
defer session.Logoff()
mountPoint, …Run Code Online (Sandbox Code Playgroud) smb ×10
cifs ×4
java ×2
samba ×2
windows ×2
.net ×1
c# ×1
debian ×1
docker ×1
file ×1
file-copying ×1
go ×1
jcifs ×1
macos ×1
microsoft-distributed-file-system ×1
mocking ×1
mono ×1
mount ×1
performance ×1
permissions ×1
powershell ×1
ubuntu ×1
winapi ×1