Мне нужна функциональность, подобная функциональности инструмента rsync
linux в моей Java-программе.Для этого я выбрал библиотеку rsync4j .
Используя их документацию , я написал следующую программу:
import com.github.fracpete.processoutput4j.output.ConsoleOutputProcessOutput;
import com.github.fracpete.rsync4j.RSync;
public class MainClass {
public static void main(String [] args) {
System.out.println("Started");//check
RSync rsync = new RSync()
.source("/home/arth/DataSourceFolder/a.txt")
.destination("/home/arth/DataDestinationFolder/")
.recursive(true);
// or if you prefer using commandline options:
// rsync.setOptions(new String[]{"-r", "/one/place/", "/other/place/"});
CollectingProcessOutput output = null;
try {
System.out.println("Inside try");
output = rsync.execute();
System.out.println("End of try");
} catch (Exception e) {
e.printStackTrace();
}
System.out.println(output.getStdOut());
System.out.println("Exit code: " + output.getExitCode());
if (output.getExitCode() > 0)
System.err.println(output.getStdErr());
}
}
Во фрагменте, на локальном компьютере, файл a.txt
копируется из одного местадругому.Это работает отлично.Файл успешно копируется, когда я запускаю его, и вот вывод:
Started
Inside try
End of try
Exit code: 0
Но мне нужно синхронизировать локальный каталог с каталогом, лежащим на удаленном хосте / машине.Когда я попытался сделать это, используя простую команду rsync
из терминала, используя следующую команду
rsync remoteUserName@23.24.25.244:/home/beth/remoteFolder/a.png /home/arth/DataSourceFolder
, она работает как шарм.a.png
Копируется на локальный компьютер по указанному пути, хотя сначала запрашивается пароль удаленного компьютера.
Но проблема, когда я использую вышеупомянутую программу Java для выполнения той же операции, заменив строки # 11 и 12 на:
.source("remoteUserName@23.24.25.244:/home/beth/remoteFolder/a.png")
.destination("/home/arth/DataDestinationFolder/")
Программа застревает после печати Started
в консоли.Не выдается ни исключение, ни программа.
Вопрос в том, как мне исправить эту проблему?