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

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

다음 스크립트를 사용하여 데이터베이스 백업을 생성하고 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 예

관련 정보