rsyncで再試行コマンドを使用する

rsyncで再試行コマンドを使用する

retryとのペアリング中にコマンドの問題が発生しましたrsyncretryDebian パッケージそして、「基準が満たされるまで通常は正常にコマンドを繰り返すことができます」と述べます。rsync時々失敗する接続で使用しようとしています。ただし、常に同じエラーが発生しますgiving up: No such file or directory。 ::

retry '/usr/bin/rsync -av source destination'
retry: Could not execute 'rsync -av source destination', giving up: No such file or directory

sourceどちらもdestination存在します。絶対パス、一重引用符、二重引用符、パスの周りの引用符、パスを変数として使用してみましたが、それらのいずれも機能しません。次の方法を使用できますこのソリューションしかし、複数のディレクトリを作成する方が面倒です。私が逃したものはありますか?

答え1

問題は、名前付きファイル(間にスペースを含む)をretry実行しようとすることです。'/usr/bin/rsync -av source destination'

retryこれがrsyncコマンドであり-av、、、sourceおよびdestinationがそのコマンドに属するパラメータであることを確認するには、rsync次のように実行する必要があります。

retry -- /usr/bin/rsync -av source destination

なぜ必要ですか?--(ダブルダッシュ)コマンド・オプションの終わりと位置パラメーターの始まりを示します。--コマンドが前に来ない場合は、コマンドオプションの1つと見なされ、retry次のエラーが発生します。-av

retry: invalid option -- 'a'

答え2

ここでは2つの3つの問題を見ることができます。 (リンクありがとうございますretry。まだ見たことがありません。)

  1. ターゲットコマンドは、コマンドと各引数の間にスペースを入れて「通常どおり」解析されます。完全な命令を引用するということは、retry引数なしで命令で実行しようとするという意味です。

    retry 'rsync -av src dst'
    retry: Could not execute 'rsync -av src dst', giving up: No such file or directory
    

    ここで回避策は、コマンド全体とその引数を引用しないことです。

  2. 引用符を削除するとエラーが発生しますが、今回は `rsync:: で使用されるパラメータをretry処理しようとしています。-av

    retry rsync -av src dst
    retry: invalid option -- 'a'
    

    --ここで回避策は、特定のセクションの後に二重ダッシュ()を使用して、より多くの引数を処理しよretryうとする試みを停止することです。

    retry -- rsync -av src dst
    
  3. srcこのコマンドが完了するまで実行すると、次の結果が表示されますdst

    ls dst
    src
    

    dstthenの内容を見るには、src後ろにスラッシュを追加してくださいsrc/

    retry -- rsync -av src/ dst
    

関連情報