是否有一个ant任务(类似于ftp或scp任务)允许我将一组文件复制到windows(smb)共享?
编辑:我必须使用jcifs创建一个任务.如果有人需要它,这里是代码.
取决于jcifs和apache ioutils.
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import jcifs.smb.SmbFile;
import org.apache.commons.io.IOUtils;
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.Task;
import org.apache.tools.ant.taskdefs.Copy;
public class SmbCopyTask extends Task
{
private File src;
private String tgt;
public void execute() throws BuildException
{
try
{
recursiveCopy(src);
}
catch (Exception e)
{
throw new BuildException(e);
}
}
public void recursiveCopy(File fileToCopy) throws IOException
{
String relativePath = src.toURI().relativize(fileToCopy.toURI()).getPath();
SmbFile smbFile = new SmbFile(tgt, relativePath);
if(!smbFile.exists())
{
smbFile.createNewFile();
}
if(!fileToCopy.isDirectory())
{
System.out.println(String.format("copying %s to %s", new Object[]{fileToCopy, …Run Code Online (Sandbox Code Playgroud) 必须从网络存储访问某些媒体文件才能通过SMB和通用Internet文件系统访问.PHP网站需要在远程存储块上执行文件操作操作.您可以建议一些替代方法,或者如果您有任何想法或可能有所帮助:
我在手臂上使用samba的命令行命令“ smbclient”有问题。
我编写了一个脚本来从Windows共享下载文件。这是该脚本的smb部分。
smbclient //CNAME/SNAME -I0.0.0.0 -N -c "case_sensitive; cd folder; prompt; mget file"
echo $?
Run Code Online (Sandbox Code Playgroud)
我的问题是退出代码。如果文件已完全下载,则退出代码为0(确定)。如果无法下载文件,则退出代码为1(确定)。如果testmaschine由于下载文件而失去了与共享的连接,则退出代码为0(不好),但是错误(“丢失连接...等”)被写入控制台。(好)
我尝试了两个不同的版本。samba-3.0.32 samba-3.6.19两者相同。
有人知道一个好的解决方法(或smbclient-argument)让我的脚本知道下载失败吗?
PS。我检查了smbclient源。看来他们忘记了设置退出代码。因为每次都存在另一个错误,请设置Errormessage并执行一个操作(例如exit(1))。但是对于超时,它们仅设置Errormessage。
先感谢您!
我有一个shell脚本,我用它来访问SMB客户端:
#!/bin/bash
cd /home/username
smbclient //link/to/server$ password -W domain -U username
recurse
prompt
mput baclupfiles
exit
Run Code Online (Sandbox Code Playgroud)
现在,脚本运行,访问服务器,然后要求手动输入命令.
可有人告诉我怎么去的命令recurse,prompt,mput baclupfiles并exit通过shell脚本运行的命令吗?
运行以下代码时,我得到了例外
jcifs.smb.SmbException:系统找不到指定的文件
码:
public void m1(String b) throws IOException {
// TODO Auto-generated method**strong text** stub
BufferedReader br=null;
String urlToBackUpFile = "smb://" +b +"/" + "c$/Program Files/Office/Config/OfficeSyncData.ini";
String cp="smb://" +b +"/" + "c$/Program Files/Office/Config/OfficeSyncData.txt";
System.out.println("smb folder of source file" + urlToBackUpFile);
NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication(null, "usrname", "passwd");
SmbFile dir = new SmbFile(cp, auth);
SmbFileInputStream in = new SmbFileInputStream( dir );
// br = new BufferedReader(new InputStreamReader(in));
System.out.println(dir.getDate());
SmbFile dest = new SmbFile (urlToBackUpFile,auth);
//count.copyTo(dest);
dir.copyTo(dest);
}
Run Code Online (Sandbox Code Playgroud)
我该如何解决?
我使用Ubuntu 16.04和Mercurial 3.7.3.我们的存储库只能作为SMB共享访问.我将共享克隆到我的主文件夹中的文件夹(我简化了一些名称):
> hg clone "/run/user/1000/gvfs/smb-share:server=xyz.com,share=abc$/Repo" Repo
Run Code Online (Sandbox Code Playgroud)
我的问题是我可以做任何事情(拉,提交等)但推动:
> hg push -v
pushing to /run/user/1000/gvfs/smb-share:server=xyz.com,share=abc$/Repo
searching for changes
2 changesets found
uncompressed size of bundle content:
876 (changelog)
724 (manifests)
586 a.txt
2869 b.txt
34900 c.rpm
37325 d.rpm
abort: Operation not supported: '/run/user/1000/gvfs/smb-share:server=xyz.com,share=abc$/Repo/.hg/store/journal'
Run Code Online (Sandbox Code Playgroud)
如果我使用sudo:
> sudo hg push -v
[sudo] password for kol:
pushing to /run/user/1000/gvfs/smb-share:server=xyz.com,share=abc$/Repo
abort: repository /run/user/1000/gvfs/smb-share:server=xyz.com,share=abc$/Repo not found!
Run Code Online (Sandbox Code Playgroud)
感谢您的帮助!
UPDATE
我在Windows 7中尝试过相同的功能hg push.
更新2
SMB共享位于Windows计算机上.
hg pushUbuntu 的输出带有--debug选项(我试图推送的提交与上面的不同):
> hg push …Run Code Online (Sandbox Code Playgroud) 当我100kb从平板电脑上传一张带有JCIFS的samba共享图片时,我遇到了一个问题,大概需要10-20分钟(在我更改缓冲区之前需要花费大约1024 to 209715206个小时)但是它不会产生任何影响来增加它
这不是连接问题,因为我已经测试了它ES File立即上载我的图片的位置
private class MyCopy extends AsyncTask<String, String, String> {
String z = "";
String username = "", password = "", servername = "", filestocopy = "";
@Override
protected void onPreExecute() {
username = edtusername.getText().toString();
password = edtpassword.getText().toString();
servername = "smb://" + edtservername.getText().toString();
filestocopy = editdir.getText().toString();
}
protected String doInBackground(String... params) {
// String buffer;
// buffer = setingPreferences.getString("buffer", "");
File file = new File(filestocopy);
String filename = file.getName();
NtlmPasswordAuthentication auth1 …Run Code Online (Sandbox Code Playgroud) 我正在尝试在Windows CE 6设备上配置SMB文件共享服务器.
我最初的尝试主要是使用桌面版的NK.exe.当我启动时,SMB0:作为smbserver.dll运行
我已设置(希望)合适的注册表值,然后重新启动SMBServer进程:
服务刷新SMB0:
但是,当我尝试连接SMB客户端时,我从未看到通告的服务(例如,通过在桌面窗口中查找文件共享,或尝试将SMB客户端连接到WinCE设备的IP地址).
我想知道SMB注册表设置是否有必要在启动时可用?我的设备不使用基于配置单元的注册表,因此注册表设置在启动时不可用.我希望刷新SMB服务器进程足以让文件共享.这样,我可以在我的应用程序中以编程方式设置注册表值,重新启动SMB服务,而不必重建kiosk NK.exe(kiosk NK.exe似乎包含smbserver.dll - 它是由一个不是很称职的第三方,重建它的工具又回到Visual Studio 2005.重建NK.exe会很"有趣".
我是否需要重建操作系统才能使用基于配置单元的注册表?
有任何想法吗?
我的注册表设置都在HKEY_LOCAL_MACHINE下:
Ident\Name "aName"
Ident\Desc, "A string"
Ident\OrigName "Another string"
\Services\Smbserver\SMB\Shares\VirtualRoot\Type Dword:0
\Services\Smbserver\SMB\Shares\VirtualRoot\Path "a valid path"
\Services\Smbserver\SMB\Shares\VirtualRoot\UserList "*"
\Services\Smbserver\AdapterList "*"
\Services\Smbserver\Keep DWord:0
\Services\Smbserver\Prefix "SMB"
\Services\Smbserver\Index DWord: 0
\Services\Smbserver\SHARES\UseAuthentication DWord:0L
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,我暂时关闭了身份验证 - 我希望首先让它在CE桌面环境中运行,然后添加身份验证,并使其在Kiosk环境中工作.
我会感激任何帮助!
由于Windows 2012R2不再支持SMB1协议而没有一些注册表黑客,使用Java中的SMB共享是否有任何成功,只支持SMB2.1或SMB3?JCIFS库显然只是SMB1,所以它出来了.我看到微软有一个用于Azure的Java库,但这似乎是利用服务而不是SMB.
我们正在将旧版Java和.net应用程序从本地VM迁移到本地Kubernetes集群。
其中许多应用程序都使用Windows文件共享来与其他现有系统进行文件传输。与重新设计所有解决方案以避免使用samba共享相比,部署到Kubernetes的优先级要低,因此,如果要迁移,我们将必须找到一种方法来保持许多现状。
我们使用Kubeadm和Canal在3 centos 7机器上设置了3节点集群。
除了天蓝色卷,我找不到任何积极维护的插件或库来挂载SMB。
我想到的是在所有节点上使用相同的挂载点(即:“ / data / share1”)在每个centos节点上挂载SMB共享,然后创建了一个本地PersistentVolume
kind: PersistentVolume
apiVersion: v1
metadata:
name: samba-share-volume
labels:
type: local
spec:
storageClassName: manual
capacity:
storage: 2Gi
accessModes:
- ReadWriteMany
hostPath:
path: "/data/share1"
Run Code Online (Sandbox Code Playgroud)
和索赔,
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: samba-share-claim
spec:
storageClassName: manual
accessModes:
- ReadWriteMany
resources:
requests:
storage: 1Gi
Run Code Online (Sandbox Code Playgroud)
并将索赔要求分配给了该申请。
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: samba-share-deployment
spec:
replicas: 2
template:
metadata:
labels:
app: samba-share-deployment
tier: backend
spec:
containers:
- name: samba-share-deployment
image: nginx
ports:
- containerPort: 80 …Run Code Online (Sandbox Code Playgroud)