「tar: メンバー名から先行する '/' を削除」というメッセージを含むメール通知

「tar: メンバー名から先行する '/' を削除」というメッセージを含むメール通知

次のスクリプトがあります

#!/bin/bash
#Purpose = Backup 
#Created on 15-10-2015
#START
#cp -b /etc/rc.local $DESDIR$MKDIRNAME/rc.local

TIME=`date +"%d%b%y_%H%M%S"`                    
MKDIRNAME=`date +"%d%b%y"`                      
FOBACKUP=$(date +'%d%b%y' -d 'last month')          
DESDIR="/usr/local/backup/"             

FILENAME1="filebin_$TIME.tar.gz"                    
FILENAME2="openvpn_$TIME.tar.gz"
FILENAME3="script_$TIME.tar.gz"


SRCDIR1="/usr/local/bin/"                   
SRCDIR2="/etc/openvpn/"
SRCDIR3="/var/script/"

mkdir -m 0755 $DESDIR$MKDIRNAME                 

tar -cpzf $DESDIR$MKDIRNAME/$FILENAME1 $SRCDIR1         
tar -cpzf $DESDIR$MKDIRNAME/$FILENAME2 $SRCDIR2
tar -cpzf $DESDIR$MKDIRNAME/$FILENAME3 $SRCDIR3
cp -b /etc/rc.local $DESDIR$MKDIRNAME/rc.local
cp -b /etc/crontab $DESDIR$MKDIRNAME/crontab

if [ -d "$DESDIR$FOBACKUP" ]; then
   echo "file $FOBACKUP exist and was deleted!"
   rm -rf $DESDIR$FOBACKUP
fi

#END

ただし、cronでこのスクリプトを実行した後、毎日次のメッセージでメールを受け取ります。

tar: Removing leading `/' from member names

この警告を受けないようにこのスクリプトを変更するにはどうすればよいですか?

ベストアンサー1

tarセキュリティ上の理由から、この警告が表示され、先行スラッシュが削除されます。ルート権限がなくても絶対パスを含むアーカイブを抽出すると、現在のファイルを古いファイルで上書きする意図しない結果が生じる可能性があります。

次の手順を実行すると、不要な出力を削除し、tar警告の問題を解決し、重要なエラーメッセージを引き続き表示できます。変数はアーカイブの内容を正しく反映するため、スクリプトの一貫性がさらに向上します。

  1. ソースディレクトリ名から先行する "/"文字をすべて削除します。

    SRCDIR1="usr/local/bin/"                   
    SRCDIR2="etc/openvpn/"
    SRCDIR3="var/script/"
    
  2. -C /オプションの使用tartarアーカイブのディレクトリ変更を行う前に/。このオプションが利用できない場合は、コマンドを/実行するtar前にディレクトリを変更する必要があります。

    tar -C / -cpzf $DESDIR$MKDIRNAME/$FILENAME1 $SRCDIR1         
    tar -C / -cpzf $DESDIR$MKDIRNAME/$FILENAME2 $SRCDIR2
    tar -C / -cpzf $DESDIR$MKDIRNAME/$FILENAME3 $SRCDIR3
    

おすすめ記事