#!/bin/bash
# バックアップ対象ディレクトリ
SRC_DIR=/path/to/source_directory
# バックアップ先ディレクトリ
DEST_DIR=/path/to/destination_directory
# 差分バックアップ用の昨日の日付を取得
YESTERDAY=$(date -d "yesterday" +%F)
# 曜日を取得
WEEKDAY=$(date +%u)
# ログファイル
LOGFILE=/var/log/backup.log
# ログ関数の定義
log() {
echo "$(date) $1" >> $LOGFILE
}
# フルバックアップを実行
full_backup() {
log "Performing full backup..."
zip -r $DEST_DIR/full_backup_$(date +%Y%m%d).zip $SRC_DIR
log "Full backup completed."
}
# 差分バックアップを実行
differential_backup() {
log "Performing differential backup..."
find $SRC_DIR -mtime -1 -newer $YESTERDAY -type f -print0 | zip -0r $DEST_DIR/diff_backup_$(date +%Y%m%d).zip -@
log "Differential backup completed."
}
# メイン処理
case $WEEKDAY in
1|2|3|4|5|7) # 平日および土曜日
differential_backup
;;
6) # 日曜日
full_backup
;;
esac