コピーするファイルとディレクトリのリストを含むテキストファイルがあります(1行に1つ)。ここで、rsyncがテキストファイルからこの入力を取得し、指定した宛先に同期するようにします。
Rsyncの"--include-from=FILE"
および"--file-from=FILE"
オプションを試してみましたが、機能していません
また、ファイルの各行に"+"
を前もって付けてみましたが、それでも動作しません。
Rsyncのmanページで説明されているように、さまざまなフィルターパターンを使用してみましたが、まだ機能していません。
誰かがこのユースケースの正しい構文を提供してくれますか? Fedora 15、RHEL 6.2、Ubuntu 10.04で上記のことを試しましたが、どれも機能しませんでした。だから私は間違いなく何かが欠けています。
どうもありがとう。
これらのファイルのコピー方法に応じて、この質問に答える方法は複数あります。絶対パスでファイルリストをコピーすることが目的の場合、次のようになります。
rsync -av --files-from=/path/to/files.txt / /destination/path/
...これは、パスが/
そして、その宛先の下に完全な絶対構造を保持します。
任意の種類のパス階層(ファイルのコレクション)を保持せずに、リスト内のすべてのファイルを宛先にコピーすることが目標である場合、次のいずれかを試すことができます。
# note this method might break if your file it too long and
# exceed the maximum arg limit
rsync -av `cat /path/to/file` /destination/
# or get fancy with xargs to batch 200 of your items at a time
# with multiple calls to rsync
cat /path/to/file | xargs -n 200 -J % rsync -av % /destination/
またはforループとコピー:
# bash Shell
for f in `cat /path/to/files.txt`; do cp $f /dest/; done
ファイルリストが与えられた場合$ HOME/GET/bringembackを含む
**need/A
alsoneed/B
shouldget/C**
cd $ HOME/GET
走る
rsync -av --files-from=./bringemback me@theremote:. $HOME/GET/collect
ファイルを取得して$HOME/GET/collect
にドロップします
$HOME/GET/
collect/
need/A
alsoneed/B
shouldget/C
またはそう信じています。
役立つ
rsyncはこれをネイティブにサポートします。
rsync --recursive -av --files-from=/path/to/files.txt / /destination/path/