retry
とのペアリング中にコマンドの問題が発生しましたrsync
。 retry
はDebian パッケージそして、「基準が満たされるまで通常は正常にコマンドを繰り返すことができます」と述べます。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
。まだ見たことがありません。)
ターゲットコマンドは、コマンドと各引数の間にスペースを入れて「通常どおり」解析されます。完全な命令を引用するということは、
retry
引数なしで命令で実行しようとするという意味です。retry 'rsync -av src dst' retry: Could not execute 'rsync -av src dst', giving up: No such file or directory
ここで回避策は、コマンド全体とその引数を引用しないことです。
引用符を削除するとエラーが発生しますが、今回は `rsync:: で使用されるパラメータを
retry
処理しようとしています。-av
retry rsync -av src dst retry: invalid option -- 'a' …
--
ここで回避策は、特定のセクションの後に二重ダッシュ()を使用して、より多くの引数を処理しよretry
うとする試みを停止することです。retry -- rsync -av src dst
src
このコマンドが完了するまで実行すると、次の結果が表示されますdst
。ls dst src
dst
thenの内容を見るには、src
後ろにスラッシュを追加してくださいsrc/
。retry -- rsync -av src/ dst