sftpChannel.Rename失败,但MV命令有效.可能是可能的原因



我遇到了这个问题,其中sftpchannel。目的地不存在文件。许可可以很好,因为MV命令有效。我将列出文件和文件夹的许可。有人有任何想法吗?我不必使用该目录,但是令人沮丧的是,不知道为什么会失败。

这是一块测试代码。RemoteFile只是SFTPCHANNEL周围的包装器,因此我可以检查文件/DIR是否存在并删除文件或在必要时创建DIR:

 String file = "/u01/apps/tpms/applstg2/ken_test/TestFile";
 String destDir = "/usr/local/jboss/server/applstg2/backup/"; // Caused by: 4: Failure
 //String destDir = "/u01/apps/tpms/applstg2/ken_test/backup/"; // Success
 RemoteFile remoteFile = new RemoteFile(file, ssh.openSftpChannel());
 remoteFile.rename(destDir + "/TestFile");

这是失败的行:

sftpChannel.rename(file, newName);

这是痕迹(我删除了所有junit和sun.反射痕迹(:

Error renaming file /u01/apps/tpms/applstg2/ken_test/TestFile to /usr/local/jboss/server/applstg2/backup//TestFile
at com.framework.remote.RemoteFile.rename(RemoteFile.java:82)
at com.framework.remote.RemoteFileTest.renameFile(RemoteFileTest.java:56)
Caused by: 4: Failure
at com.jcraft.jsch.ChannelSftp.throwStatusError(ChannelSftp.java:2846)
at com.jcraft.jsch.ChannelSftp.rename(ChannelSftp.java:1923)
at com.framework.remote.RemoteFile.rename(RemoteFile.java:79)

权限:

drwxrwxr-x  2 applstg2 applstg2   4096 May  2 22:09 ken_test
-rw-rw-r-- 1 applstg2 applstg2 61595086 May  1 18:05 TestFile
drwxrwxr-x  2 applstg2 applstg2 4096 May  2 21:57 backup

我敢打赌您的源源和目标路径在不同的卷上,并且SFTP服务器无法处理跨卷移动文件,因为这不是一个简单的重命名。

做一个df -lk或以其他方式弄清楚两个位置的座上点在每个位置的上方。这是我唯一能想到的可以解释这一点的事情,看看您的两条途径的最高水平有多不同,似乎很可能。

如果是这种情况,我认为您要使用远程命令执行来重命名/移动... ssh foo@bar.com mv xxx yyy。我不确定这是您的意思是" MV",还是您现在在服务器上本地进行此操作。

最新更新