rsyncは--files-fromオプションを使用していませんか?


13

実行しようとしていますが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オプションについて何が欠けていますか?


試してくださいsed "s#~/#/home/wolf/#g" -ie ~/.rsync_file_list
アンディ

@アンディ:悲しいかな、同じ結果。
ウルフ

回答:


20

さて、問題が見つかりました。

  1. ファイル名を含むファイルにはファイル名のみを含める必要があります。相対パスまたはそれ以外のパス。
  2. を指定した後--files-from=FILE、rsyncはリストされたファイルを見つけるためのソースディレクトリを必要とします。

したがって、コマンドはである必要がありますrsync -a --files-from=~/.rsync_file_list $HOME/ /destination

.rsync_file_list 読むべきです:

file 1
file 2
file 3

3
修正:指定されたファイル内のファイル名はソースディレクトリに相対的ですが、それより上にはできません(no ../)。先頭のスラッシュは無視されるため、絶対パスは機能しません。
ウルフ

独自の回答を編集して、この非常に素晴らしい追加情報と関連する情報を後で回答自体に追加できると思います。
ビニシウスM

0

rsyncが「〜」記号を認識して変換するのに十分なスマートでない限り、「〜」の使用は「files-from」ファイル内では機能しない場合があります。

シェルのコマンドラインでコマンドの一部として「〜」を指定する場合、プログラムに引数を渡す前に「〜」をホームディレクトリ変換するのはシェル自体です。だから、あなたが入力していても、どのような「見ること」は、実際に解決されたパスで、または。rsync -a ~/filersyncrsync -a /home/foo/file

詳細については、「Bash Tilde Expansion」を参照してください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.