2016-08-31 10 views
0

以下は、cronを介して実行されるWordPressバックアップbashスクリプトから抜粋したものです。添付ファイル付きメールをbashアレイ

do 
    file="$MDB/$db.$now.sql.gz" 
    mysqldump -u $USER -h $HOST -p$PASS $db | gzip -9 > $file 
    echo "Backup $file.....DONE" 
    echo "Database Backup of $file" | mutt -a "$file" -s "Database Backup File Attached" -- [email protected] 
    echo "Emailing $file.... DONE" 
done 

バックアップ部分の電子メールで通知してください。ファイルは1つずつ電子メールで送信されるため、10個のデータベースバックアップで10個の電子メールが送信されます。

私はファイルをループの配列に入れてから、muttですべてのファイルを添付した電子メールを1つ送信します。

どのようにBashで行うことができますか?

+0

ループに最初の行がありません。おそらく 'while'で始まります。おそらく、 'file'がループを通過するたびに異なる値を持つように、' MDB'、 'db'、および/または' now'の値を​​設定します。 – chepner

答えて

2

fileの値をループ内の配列に単に追加します。

declare -a files 
... 
do 
    file="$MDB/$db.$now.sql.gz" 
    mysqldump -u "$USER" -h "$HOST" -p"$PASS" "$db" | gzip -9 > "$file" 
    files+=("$file") 
done 

echo "Backup ${files[*]}.....DONE" 
echo "Database Backup" | mutt -s "Database Backup Files Attached" -a "${files[@]}" -- [email protected] 
echo "Emailing ${files[*]}.... DONE" 

いくつかの注意事項:

  1. 使用${files[*]}文字列のリストを含みます。各要素が別の引数である場合は、${files[@]}を使用してください。
  2. 複数の引数を使用する場合、-aの最後ののオプションの前に--の値を指定する必要があります。
  3. おそらく、すべてのバックアップ名を件名に含めることは望ましくありません。