tarで圧縮する時に特定のディレクトリは除外する方法

2021-06-24

概要

このサーバーのバックアップですが、cronでWEBコンテンツがあるディレクトリをtarで圧縮しています。owncloudを入れたので容量が大きくなってバックアップのダウンロードに時間をかかるようになりました。owncloudの領域でいるのはデータがある箇所だけですし、その箇所はPCと同期されているので不要です。

tarで圧縮する時に、rsync等と同じようにexcludeのオプションで除外できないか調べました

tar で特定のディレクトリを除外するオプション

調べてみると、rsyncと同じで「exclude」のオプションでした。同期する時にrsyncだとログは除外とかtmp領域は除外とか、excludeオプションは使い機会が多かったですが、tarの圧縮でも同じオプションだったですね

【コマンド書式】
tar cvf 圧縮するパス –exclude 除外するディレクトリのパス 圧縮対象対象のディレクトリ

下記では、/var/www/vhost/owncloudを除外して、/var/www/vhost/を圧縮する場合のコマンドです

# ディレクトリ構造
/var/www/vhost/
├── owncloud
├── site01
├── site02
└── site03


$ tar czvf /var/tmp/www_vhost.tar.gz /var/www --exclude vhost/owncloud

excludeで指定するディレクトリパスですが、圧縮対象のディレクトリからのパスになるので注意して下さい。

また除外するディレクトリを指定しても圧縮がされてしまう場合はあります。
–exclude 除外するディレクトリの最後に「/(スラッシュ)」が含まれる場合は圧縮されてしまうケースがありますので注意して下さい

  • 圧縮される   –exclude vhost/owncloud/
  • 圧縮されない  –exclude vhost/owncloud

LinuxCentOS 6,CentOS 7

Posted by admin