Backup
數據庫備份腳本生成不同大小的文件?
我正在使用以下腳本創建數據庫備份並使用 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?
請使用 rsync。Rsync 檢查文件的 md5 雜湊值。