Ich verwende das folgende Skript, um ein Datenbank-Backup zu erstellen und es mittels SCP an einen Speicherort zu senden.
Mir ist aufgefallen, dass die resultierende Datei sehr häufig eine scheinbar korrekte Datei liefert. Meistens liegt die Dateigröße bei etwa 3 GB, aber manchmal ist die resultierende Datei etwa 900 GB groß, manchmal 2,2 MB.
Das Skript lautet:
#!/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)
Da die resultierende Datei in den meisten Fällen in Ordnung ist, vermute ich, dass das Problem möglicherweise am SCP-Teil liegt.
Wie kann ich sicherstellen, dass die am Speicherort generierte Datei mit dem Original übereinstimmt und, falls die Datei unterschiedlich ist, erneut versuchen, SCP auszuführen?
Antwort1
verwenden Sie bitte rsync. Rsync überprüft den MD5-Hash der Datei.