- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 apache commons vfs 重命名 vsftpd 服务器中的文件,moveTo 函数在本地系统操作系统(Kubuntu 19.04)和 VSFTPD 服务器中工作正常,但是当我尝试在具有 ubuntu 18.04 的测试环境中重命名该文件时我无法重命名出现异常的文件。
使用此代码:
public static boolean move(String hostName, String username, String password, String remoteSrcFilePath,
String remoteDestFilePath, byte [] data) {
FileObject remoteFile = null;
FileObject remoteDestFile = null;
boolean result = false;
try (StandardFileSystemManager manager = new StandardFileSystemManager()){
manager.init();
// Create remote object
remoteFile = manager.resolveFile(
createConnectionString(hostName, username, password, remoteSrcFilePath), createDefaultOptions());
remoteDestFile = manager.resolveFile(
createConnectionString(hostName, username, password, remoteDestFilePath), createDefaultOptions());
if (!remoteDestFile.exists() && remoteFile.exists()) {
remoteFile.moveTo(remoteDestFile);
if(null != data)
writeData(remoteDestFile, data);
result = true;
}else {
throw new DataIntegrityViolationException("Destination path already exists");
}
} catch (IOException e) {
logger.error("Error while renaming/moving file",e);
} finally {
try {
if(null != remoteDestFile)
remoteDestFile.close();
if(null != remoteFile)
remoteFile.close();
} catch (FileSystemException e) {
logger.warn("error while closing fileobject "+e.getMessage());
}
}
return result;
}
public static FileSystemOptions createDefaultOptions() throws FileSystemException {
// Create SFTP options
FileSystemOptions opts = new FileSystemOptions();
// SSH Key checking
SftpFileSystemConfigBuilder.getInstance().setStrictHostKeyChecking(opts, "no");
/*
* Using the following line will cause VFS to choose File System's Root as VFS's
* root. If I wanted to use User's home as VFS's root then set 2nd method
* parameter to "true"
*/
// Root directory set to user home
SftpFileSystemConfigBuilder.getInstance().setUserDirIsRoot(opts, true);
// Timeout is count by Milliseconds
SftpFileSystemConfigBuilder.getInstance().setConnectTimeoutMillis(opts, 10000);
return opts;
}
}
我有这个异常(exception)
org.apache.commons.vfs2.FileSystemException: Could not determine if file "sftp://ftpuser:***@ip_address/home/ftpuser/ftp/1/Documents/test1/test2" is writeable
请注意,上面的代码在本地运行得很好。
最佳答案
如果您遵循source code for apache commons vfs for moveTo()你会发现:
if (canRenameTo(destFile)) { //src and dest have the same FS
if (!getParent().isWriteable()) { // <-- it could throw the same exception here
throw new FileSystemException("vfs.provider/rename-parent-read-only.error", getName(),
getParent().getName());
}
} else {
if (!isWriteable()) { // <---- it throws inside here (IMO) rather than returning false
throw new FileSystemException("vfs.provider/rename-read-only.error", getName());
}
}
...,您会发现,如果目标文件不可写,但以灾难性的方式(如 isWriteable( file)
在其主体内部抛出异常,而不是返回 false
。
我的第一个调用是验证 sftpd 进程 和 ftp 用户 是否可以写入您想要将文件移动到的目录。
呵呵!
关于java - 无法在 ubuntu 18.04 中使用 apache commons vfs for vsftpd 重命名文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58246588/
我不知道为什么它无法打开配置文件。 $ ll /etc/vsftpd/vsftpd.conf -rw-r--r-- 1 xuehui1 root 4182 Aug 20 2012 /etc/vsft
我尝试通过 apt-get install vsftpd 在 Ubuntu 15 中安装 vsftpd并配置了/etc/vsftpd.conf 文件。但是当我输入终端为 ftp localhost ,
RHEL4中的vsftpd在编译时已经支持tcp_wrappers,因此可以利用tcp_wrappers实现主机访问控制。 实验之前,首先说下tcp-wrappers的执行顺序: 先执行host
vsftpd.conf 文件夹是 anonymous_enable=NO local_enable=YES write_enable=YES chroot_local_user=NO listen=N
我在亚马逊 ec2 上使用 fedora 实例安装了 vsftpd,它是最新版本,但出现错误: 在可爱的FTP中: COMMAND:> PASV 227 Entering Passive Mode (
我正在尝试同时上传多个文件。在被动模式下建立数据连接后,我的客户端向 vsftp 服务器发送另一个“pasv”请求以获取服务器和端口值。这样我就可以使用一组新的端口和 ip 值连接到 vsftpd。但
我在 Windows Azure (Ubuntu) 上有虚拟机。 我已在服务器上安装了 vsftp,并在 Azure 门户中为 FTP 分配了端点。 但是当我尝试连接 FileZilla 时,出现以下
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 想改进这个问题?将问题更新为 on-topic对于堆栈溢出。 8年前关闭。 Improve this qu
我必须构建一个与 vsftpd 兼容的 ftp 客户端。我不确定 vsftpd 遵循哪个协议(protocol),sftp 还是 ftps,我猜是 sftp,因为我可以将一些 vsftpd 客户端连接
我正在使用 FTP 的 Spring 集成将文件上传到 FTP 服务器 @Bean @ServiceActivator(inputChannel = "toFtpChannel") p
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a software
我在 Ubuntu mate 上安装了 vsftpd。我按照本手册做所有事情: https://www.digitalocean.com/community/tutorials/how-to-conf
我有一个云托管 Linux 解决方案。我让 vsftpd 处理它,但在遇到问题并修改了很多设置之后,我现在遇到一个问题,用户可以使用 FTP 登录并连接到正确的主目录,在其中导航,下载文件,但他们无法
背景: 我开始尝试在 Docker 上进行网络部署。 所以现在我有: mariadb实例存放所有数据,数据目录设置为volume; php:fpm 单个网站的实例,卷设置到/var/docker/
【现象】 [root@instance-6es4pt95 init.d]# systemctl status vsftpd ● vsftpd.service - Vsftpd ftp daemon L
如何在谷歌云计算引擎中创建 ftp?我可以毫无问题地通过 SFTP 进行连接,但我的公司正在使用一种软件通过 FTP 进行连接,以便从服务器下载 XML 文件。不幸的是,该软件没有 SFTP 连接工具
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a softwar
我已经在 azure 盒子上的 centos 7.1 上安装了 vsftpd。我已经编辑了文件/etc/vsftpd/vsftpd.conf,因此其内容如下 local_enable=YES writ
我的意思是进入ftp://yourserver时生成的html代码...我试图用谷歌搜索它但没有运气,也没有在项目网页中找到。我想修改该代码以使其对移动设备更加友好。 提前致谢 最佳答案 如果您使用浏
我正在尝试跟踪 linux 上的 vsftpd 服务器进程,以便在 vsftpd 进程进行系统调用时能够获得控制权。我启动 vsftpd 进程并将此进程 ID 作为命令行传递给跟踪 vsftpd 的以
我是一名优秀的程序员,十分优秀!