ディレクトリ構造の特定のサブフォルダを新しいフォルダにコピーする

ディレクトリ構造の特定のサブフォルダを新しいフォルダにコピーする

次のディレクトリ構造があります。

                Main_Dir
                   |
  -----------------------------------
  Subdir1       Subdir2       Subdir3
     |             |             |
 ---------     ---------     ---------
 |   |   |     |   |   |     |   |   |            
fo1 fo2 f03   fo1 fo2 f03   fo1 fo2 f03

Subdir1すべてのサブディレクトリ(、、、Subdir2Subdir3を新しいフォルダにコピーしたいと思います。しかし、新しい場所fo1にコピーしたいです。fo2

どうすればいいのかわかりません。

ベストアンサー1

ディレクトリツリーが単純なディレクトリツリー以上の場合は、..../f03このコマンドを使用して各&をrsyncコピーし、名前付きの他のすべてのディレクトリを除外できます。fo1fo2fo*

$ rsync -avz --include='fo[12]/' --exclude='fo*/' \
      Main_Dir/ new_Main_Dir/.

このタイプのコピーシナリオを処理するときは、実際にファイルをコピーせずにどのようなことを行うのかを確認できるように、常にスイッチrsync--dry-run使用してください。--verbose

$ rsync -avz --dry-run --verbose --include='fo[12]/' --exclude='fo*/' \
      Main_Dir/ new_Main_Dir/.

はい

試運転。

$ rsync -avz --dry-run --include='fo[12]/' --exclude='fo*/' \
      Main_Dir/ new_Main_Dir/.
sending incremental file list
./

Subdir1/
Subdir1/fo1/
Subdir1/fo2/
Subdir2/
Subdir2/fo1/
Subdir2/fo2/
Subdir3/
Subdir3/fo1/
Subdir3/fo2/

sent 201 bytes  received 51 bytes  504.00 bytes/sec
total size is 0  speedup is 0.00 (DRY RUN)

何が含まれているか除外されるかについての内部ロジックを表示するには、rsyncこのスイッチを使用します--verbose

$ rsync -avz --dry-run --verbose --include='fo[12]/' --exclude='fo*/' \
      Main_Dir/ new_Main_Dir/.

sending incremental file list
[sender] showing directory Subdir1/fo2 because of pattern fo[12]/
[sender] showing directory Subdir1/fo1 because of pattern fo[12]/
[sender] hiding directory Subdir1/fo3 because of pattern fo*/
[sender] showing directory Subdir2/fo2 because of pattern fo[12]/
[sender] showing directory Subdir2/fo1 because of pattern fo[12]/
[sender] hiding directory Subdir2/fo3 because of pattern fo*/
[sender] showing directory Subdir3/fo2 because of pattern fo[12]/
[sender] showing directory Subdir3/fo1 because of pattern fo[12]/
[sender] hiding directory Subdir3/fo3 because of pattern fo*/
delta-transmission disabled for local transfer or --whole-file
./
Subdir1/
Subdir1/fo1/
Subdir1/fo2/
Subdir2/
Subdir2/fo1/
Subdir2/fo2/
Subdir3/
Subdir3/fo1/
Subdir3/fo2/
total: matches=0  hash_hits=0  false_alarms=0 data=0

sent 201 bytes  received 51 bytes  504.00 bytes/sec
total size is 0  speedup is 0.00 (DRY RUN)

別の形式のディレクトリを除外する必要がある場合は、複数の除外を追加できます。

おすすめ記事