
実行しようとすると、rsync -a --files-from=~/.rsync_file_list ~/destination
次のメッセージが表示されますrsync error: syntax or usage error (code 1) at options.c(1652) [client=3.0.7]
。誰かが私が間違っていることを教えてもらえますか?
ファイルには、改行文字で区切られたで始まる~/.rsync_file_list
ファイル名のリストのみが含まれています~/
(もちろん、すべての項目を同じ行にリストしようとしましたが、結果は同じでした)。
実行してみると元気になりrsync -a ~/file ~/file2 ~/file3 ~/destination
ましたね。それでは、この--files-from
オプションで私が見逃しているものは何ですか?
答え1
さて、問題を見つけました。
- ファイル名を含むファイルには、次のものを含める必要があります。ただファイル名、相対パス、またはその他のパスはありません。
- 指定した場合、
--files-from=FILE
rsync はリストされたファイルを見つけるためにソースディレクトリを必要とします。
したがって、コマンドはrsync -a --files-from=~/.rsync_file_list $HOME/ /destination
。
.rsync_file_list
読む必要があります:
file 1
file 2
file 3
答え2
rsyncが "~"記号を認識して翻訳するのに十分スマートではない場合、 "files-from"ファイルで "~"を使用すると機能しない可能性があります。
シェルコマンドラインでコマンドの一部として "~"を指定すると、次のようになります。シェル独自に「~」をホームディレクトリに変換します。今後プログラムにパラメータを渡します。したがって、 を入力してもrsync -a ~/file
「rsync
見える」ことは実際に解決されたパス、つまりrsync -a /home/foo/file
。
バラよりBashチルダ拡張より多くの情報を知りたいです。