rsync
の代わりに使用してファイルをコピーすることをお勧めしますscp
。 rsync
はすでに新しいファイルを一時ファイル名にコピーしており、ファイル同期のための他の多くの便利な機能も備えています。
$ rsync -a source/path/ remotehost:/target/path/
もちろん、必要に応じてファイルごとにコピーすることもできます。
rsync
の一時ファイル名でポーリング サービスによる検出を回避できる場合は、コマンドを のラッパーとして機能するシェル スクリプトに置き換えるだけでscp
、rsync
Java プログラムを変更する必要がなくなります。
Java プログラムがscp
コマンドを呼び出すために使用する正確な形式を知っておく必要があります。これは、フィードしたオプションがrsync
期待どおりに機能することを確認するためです。
また、Java プログラムがどのように を呼び出すかを理解する必要がありますscp
。フルパス名 (つまり/usr/bin/scp
) でこれを行う場合、このソリューションは、scp に依存するシステムに他のものを危険にさらす可能性があります (たとえば、scp がラッパーとしてではなく通常どおりに動作することを期待するなど)。のようにパッケージにインストールされたバイナリを変更すると、/usr/bin/scp
パッケージの登録が「壊れる」可能性があり、バイナリがシェル スクリプトに変更されるため、将来のセキュリティ更新プログラムのインストールが困難になります。そしてもちろん、変更を加えるとセキュリティに影響する可能性があります。
全体として、Java プログラムを変更して、希望どおりに正確に実行できるようにした方がよいと思います。たとえそれが、シェル スクリプトを起動して自動化の側面を処理することであっても、後で変更する必要はありません。 Java を変更します。
幸運を!