コピーでディレクトリを作成する際に、特定のディレクトリやファイルを除外するやり方の覚書き。
cpコマンドではなく、rsyncコマンドを使います。
環境
- OS: CentOS7
実行フロー
今回は、
- aaaディレクトリからbbbディレクトリを作成する
- .git配下, README.md, 子ディレクトリ下の.gitkeepは除外する
という条件でやってみます
(1) 対象の確認
-n
オプションにより、実際には実行せず、対象ファイルを確認します(--dry-run
と同義)
※ターミナルの表示は省略してます
$ rsync -ahvn ./aaa/ ./bbb --exclude '.git/' --exclude 'README.md' --exclude '*.gitkeep*'
(2) 実行
--progress
で転送状況を表示させます
※ターミナルの表示は省略してます
$ rsync -ahv --progress ./aaa/ ./bbb --exclude '.git/' --exclude 'README.md' --exclude '*.gitkeep*'
(3) 結果確認
diffコマンドで確認。除外対象がbbb配下になければOK
$ diff -rq aaa bbb
Only in aaa/backup: .gitkeep
Only in aaa: .git
Only in aaa: README.md
Only in aaa/tmp: .gitkeep
終わりに
本番展開をコピーでやってるので・・、、新規展開 & 不要なものを入れないようメモ。
cpコマンドでは特定のディレクトリやファイルを除く、のは無理っぽいので、rsyncで。
いきなり、rsyncするのはキケンなので、-nオプションで対象を確認した上で、実行してます
参考
以下のページたちがとても参考になりました。ありがとうございました。