데이터베이스 백업 스크립트가 다양한 크기의 파일을 생성합니까?

데이터베이스 백업 스크립트가 다양한 크기의 파일을 생성합니까?

다음 스크립트를 사용하여 데이터베이스 백업을 생성하고 scp를 사용하여 저장소 위치로 보냅니다.

생성된 파일이 겉보기에 올바른 파일을 제공하는 경우가 종종 있는 것으로 나타났습니다. 대부분의 경우 파일 크기는 약 3GiB이지만 결과 파일은 약 900B, 때로는 2.2MiB입니다.

스크립트는 다음과 같습니다

#!/bin/bash

# database credentials

DATABASEHOST=<host>
DATABASEUSER=<user>
DATABASEPASSWORD=<password>
DATABASESCHEMA=<schema>
DATABASEENV=<env>

# Local directory of mysqldump file
LOCALDIR=<localdir>

# Temporary directory for compressed file
TEMPDIR=<tempdir>

# Remote Directory for backups.
REMOTEDIR=<remote-dir>

# USERname to login as
BACKUPUSER=<backupuser>

# Backup host to login to
BACKUPHOST=<backuphost>

# mysqldump file
MYSQLDUMPFILE="$(date +%Y%m%d)"_bkp_"$DATABASESCHEMA".sql

# compressed file
COMPRESSEDFILE="$(date +%Y%m%d)"_"$DATABASEENV"_"$DATABASESCHEMA".tar.gz

#--- end config


echo $(date +%H:%M)
echo "Creating the MySQL dump" 
mysqldump --host="$DATABASEHOST" --user="$DATABASEUSER" --password="$DATABASEPASSWORD" --single-transaction "$DATABASESCHEMA" > "$LOCALDIR"/"$MYSQLDUMPFILE"

#echo "Generating md5sum"
md5sum "$LOCALDIR"/* > "$LOCALDIR"/checklist.chk

#echo "Compressing the dump and checklist"
tar -cvzf "$TEMPDIR"/$(date +%Y%m%d)"_"$DATABASEENV"_"$DATABASESCHEMA".tar.gz" "$LOCALDIR"/*

#echo "Sending the compressed file to storage location"
scp "$TEMPDIR"/"$COMPRESSEDFILE" "$BACKUPHOST":"$REMOTEDIR"

echo "Removing generated files"
rm "$LOCALDIR"/checklist.chk > /dev/null 2>&1

rm "$LOCALDIR"/"$MYSQLDUMPFILE" > /dev/null 2>&1

rm "$TEMPDIR"/"$COMPRESSEDFILE" > /dev/null 2>&1

echo $(date +%H:%M)

생성된 파일은 대부분 괜찮기 때문에 scp 부분에 문제가 있을 수 있다고 생각합니다.

생성된 파일이 원본 파일과 동일한 위치에 저장되었는지 확인하고 다른 경우 scp를 다시 시도하려면 어떻게 해야 합니까?

답변1

rsync를 사용해 보세요. Rsync는 파일의 md5 해시를 확인합니다.

rsync 예

관련 정보