Linux でディレクトリ構造のみコピーする

2021-01-14

概要

ディレクトリをそのままコピーするのじゃなくて、ディレクトリ構造のみをコピーしたいケースは無いででしょうか?

例えば、メールサーバーを移行した際に、ユーザーのメールボックスの領域だったり、Apacheでバーチャルホストを構築していてログディレクトリのみコピーしないとApacheを起動しないケースなど・・・

意外とあるかもしれないので、ディレクトリのみコピーする方法を紹介します

findとmkdirを組み合わせてコピー

ネットでディレクトリのみコピーとかで検索すると、よく検索結果にHITするケースです

下記のコマンドでは、/var/tmp/backup へ /home/log 以下のディレクトリをコピーしているますが、/var/tmp/backupのコピーするとコピー元の最下層のディレクトリは、「/var/tmp/backup/home/log」となり、フルパスでコピーしされいるので、少しやりたいこと違います。もう少しコマンドを繋げたらいい感じになると思いますが、コマンドが複雑になりそうです

$ find /home/log -type d | xargs -I{} mkdir -p /var/tmp/backup/{}

$ ls /var/tmp/backup
home

rsyncでディレクトリのみコピー

findとmkdirだと、ちゃんと動かなかったので、rysncを利用してディレクトリのみコピーします。
コマンドは以下のようにすればOKです

rsync -avz –include “*/" –exclude “*" 【コピー元】 【コピー先】

例)/var/tmp/backup へ /home/log 以下のディレクトリ構造だけをコピーする。

$ rsync -avz --include "*/" --exclude "*" /var/tmp/backup /home/log
$ ls /var/tmp/backup
log

スポンサーリンク