rsyncを使用してソースパスレベルからフォルダ(およびすべてのコンテンツ)のみをコピーする

rsyncを使用してソースパスレベルからフォルダ(およびすべてのコンテンツ)のみをコピーする

fファイルはありますが、srcディレクトリdf非表示にすることも非表示にすることもできます)には、次のツリーがあります。

src/f1
src/f2
...
src/d1
src/d2
src/d3
...

dst同じ構造をフォルダにコピーしますが、srcそのフォルダ内のすべてのファイルを除外したいと思います(たとえば、上記のツリーの、、f1など、f2他のフォルダの内容は除く)。つまり、フォルダとその内容(ファイル、フォルダ、リンク、デバイスなど)をすべてコピーしたいのです。d1d2d3srcdst

ファイルを1つだけ使用する必要があり、rsync可能であれば1つのファイルのみを使用する必要があります(しかし--exclude-from他の方法も歓迎します)。rsync

アンカーを許可し、「スラッシュ()を除くすべての項目と一致」を意味するため、除外ファイルを挿入しようとしましたが、/*結果として空のフォルダが作成されます。/src*/dst

非常にありがとう

ベストアンサー1

manrsyncは言った:

option --filter=RULE, -f add a file-filtering RULE

だから一度試してください。

rsync -avr -f"+ */" -f"- *" /src/ /dest/

-f"+ */"-f"- *"どこからでもファイルが削除されると、ディレクトリが追加されます。

@Kusalanandaが言ったように、これはすべてのサブツリー内のすべてのファイルを防ぎます。

rsync -avr -f"+ */" -f"- /*" /src/ /dest/ または

rsync -avr --include="*/" --exclude="/*" /src/ /dest/ ツリーサブディレクトリのファイルが同期されます。

おすすめ記事