ローカルマシンのファイルの特定のパターンに基づいて、ファイルを引き出すリモートLinuxマシンがあります。rsync
を使用しています。Javaを使用したパターンに基づいてファイルをrsyncできない
私は、ターミナルウィンドウにいるとき、私は、次のコマンドを使用してこのタスクを実行することができる午前:このコマンドの結果
rsync -avzrm --include '**/someDir/*MG*' --include '*/' --exclude '*' -e "ssh -i /home/localUser/.ssh/id_rsa -l remoteUser" [email protected]:/home/remoteUser/baseDir/ /home/localUser/testDir/
を私はbaseDir
ディレクトリ内のすべてのファイルをコピーすることができていますし、その名前に 'MG'を含むサブディレクトリ。
私はJavaコードを使用して同じ結果を達成しようとしています:
public class DataDumper {
public static void main (String[] args){
try {
String[] cmd = new String[]{"rsync", "-avzrm", "--include", "'**/someDir/*MG*'", "--include", "'*/'", "--exclude", "'*'",
"-e", "ssh -i /home/localUser/.ssh/id_rsa -l ec2-user",
"[email protected]:/home/remoteUser/baseDir/", "/home/localUser/testing"};
Process p = new ProcessBuilder().command(cmd).inheritIO().start();
}
catch (IOException ex) {ex.printStackTrace();}
catch (Throwable th) {th.printStackTrace();}
}
}
しかし、私はbaseDir
ディレクトリ内のすべてのファイルを引き上げ終了しています。 何が間違っていますか?なぜjavaはinclude
とexclude
オプションを認識しませんでしたか? ご協力いただければ幸いです。ありがとうございました。
私の問題はコマンドを実行していません。 私の問題は、コマンドの引数のいくつかが何らかの理由で無視されることです。
[Java ProcessBuilderと複数のパラメータをスペースで区切った]の複写が可能です(https://stackoverflow.com/questions/15111517/java-processbuilder-with-multiple-params-with-spaces) – Joe
これは本当に役に立たなかったです。私はコマンドを実行することができないわけではなく、いくつかのパラメータを無視するだけです。 – Dan