Я сталкиваюсь с этой проблемой, когда sftpChannel.rename завершается с не очень полезной ошибкой, и я не могу выяснить причину. Файл не существует в месте назначения. Разрешения в порядке, потому что команда 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.reflect):
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