スクリプト内容
#!/bin/bash
# バックアップフォルダを指定する変数
BACKUP_DIR="/tmp"
# リストファイルを指定する変数
LIST_FILE="/tmp/listfile.txt"
# 日時フォーマット (YYYYMMDDhhmmss)
TIMESTAMP=$(date +"%Y%m%d%H%M%S")
# バックアップ先のディレクトリ
DEST_DIR="$BACKUP_DIR/$TIMESTAMP"
# バックアップ先のディレクトリを作成
mkdir -p "$DEST_DIR"
# リストファイルを読み込み、バックアップを取得
while IFS= read -r FILE; do
if [[ -f "$FILE" || -d "$FILE" ]]; then
# バックアップ先のサブディレクトリを作成
SUBDIR=$(dirname "$FILE")
mkdir -p "$DEST_DIR/$SUBDIR"
# ファイルまたはディレクトリをコピー
cp -a "$FILE" "$DEST_DIR/$SUBDIR"
fi
done < "$LIST_FILE"
# バックアップフォルダをtar.gz形式で圧縮
tar -czf "$BACKUP_DIR/$TIMESTAMP.tar.gz" -C "$BACKUP_DIR" "$TIMESTAMP"
echo "バックアップが完了し、圧縮されました: $BACKUP_DIR/$TIMESTAMP.tar.gz"
上記のスクリプトを実行するとリストファイルに記載したファイルをバックアップしてくれます。
リストファイルサンプル
/etc/fstab
/etc/hostname
/etc/hosts
/etc/ssh/sshd_config
/etc/network/interfaces
/etc/resolv.conf
/etc/sysctl.conf
/etc/crontab
/etc/passwd
/etc/group
/etc/shadow
/etc/gshadow
/etc/sudoers
/var/spool/cron/crontabs
コメント