tarプロンプトから「logs」というフォルダをすべて除外してみました(すべてのログファイルをバックアップする必要はありません)。
簡略化されたプロンプトは次のとおりです。
tar -cvpf backup.tar servers --exclude='*/logs'
私のファイルシステムは次のとおりです。
/home/
backup.sh
servers/
server1/
logs/
logfile1
logfile2
server2/
logs/
logfile1
logfile2
[server3 ... server100]/
スクリプトを実行するとログフォルダは除外されませんが、次のコマンドを実行すると除外されます。
tar -cvpf backup.tar servers --exclude=server1/logs --exclude=server2/logs (and so on for the rest of the servers)
それでは、各サーバーに対して除外コマンドをコピーして貼り付ける必要がなく、エラーが発生する可能性が高いようにコマンドを変更するにはどうすればよいですか。
答え1
GNU tar(v. 1.29)を使用するとtar cvf foo.tar --exclude "*/logs" servers
。
--exclude
このオプションは、コマンドラインの後ろにリストされているパスにのみ適用されるように見えるため、以下は除外されませんa/logs
。
tar cvf foo.tar servers/a --exclude "*/logs" servers/{b,c}
ただし、マニュアルページには明示的に言及されていません(ただし、概要には通常どおりファイルの前にオプションがリストされています)。