次のテキストファイルがあります
...
/a/b/c/f1
/a/b/c/f2
...
/a/b/c/d1
...
どこにファイルがありますがf1
、ディレクトリです。正確な階層をターゲットフォルダ()にコピーしたいと思います。f2
d1
/z
Bashを使用すると、lr
テキストファイルから読み取られたすべての行に対して私のスクリプトが実行されます(単純化のためにこれらのオプションは省略しました)。
rsync $lr/ /z/$lr
/z/a/b/c/d1
結果をファイルに対して.Unfortunately(残念ながら)取得すると、フォルダは正しくコピーされます。
/z/a/b/c/f1/f1
/z/a/b/c/f2/f2
rsync
ファイルとディレクトリに対して上記と同じ呼び出しを使用して、この問題をどのように解決できますか?
ベストアンサー1
ファイルを手動で再同期しないでください。--files-from=
テキストファイルを含めるには、このオプションを使用します。
ディレクトリルール:
- パスが末尾で終わらない場合にのみディレクトリを作成します。
/
- ディレクトリの内容を同期させるには、末尾またはオプション
/
を追加します。--recursive
-r
オプションを使用し-a
て再帰したい場合は、-r
追加する必要があります。ファイルのパスがソースディレクトリと相対的であることを確認してください(先頭を含めるか除く/
)。
入力の最小例は次のとおりです。
rsync --files-from=textfile / /z
テキストファイルを事前に変更/フィルタリングする必要がある場合は、stdinからrsyncに渡すことができます。
your_command textfile | rsync --files-from=- / /z