我有一个正在尝试使用的备份脚本,但我遇到了问题。
#Setup Variables
DOMAIN=domainexample.com
FILENAME=${DOMAIN}.$(date +%Y%m%d)
DBSERVER=localhost
DATABASE=databasename
USER=mysqluser
PASS=mysqlpass
BACKUPSERVER=user@backupserverinfo:~
BACKUPSERVERPORT=22
# Dump Database for Backup
mysqldump --opt --user=${USER} --password=${PASS} ${DATABASE} > ${FILENAME}.sql
# GZIP the Database File
gzip -f ${FILENAME}.sql
# Make a TEMP DIR and Move the Backup to it for archival
mkdir /var/www/${DOMAIN}/db
cp $FILE.sql.gz /var/www/${DOMAIN}/db
# TAR & GZ domain directory to preserve database, files and images
tar -czvf ~/${FILENAME}.website.tar.gz /var/www/${DOMAIN}
# Remove TEMP DB DIR and Backup
rm -rf /var/www/${DOMAIN}/db
# Transfer backups to backup server
scp -P ${BACKUPSERVERPORT} ${FILENAME}.sql.gz ${FILENAME}.website.tar.gz ${BACKUPSERVER}
# Clear out old backups
rm -rf ~/backups/*
# Move files to temp directory
mv ${FILENAME}.sql.gz ~/backups
mv ${FILENAME}.website.tar.gz ~/backups
# Completed Messages
echo Completed!
我遇到的问题是,尽管我有 3GB 内存和硬盘驱动器上可用站点空间的 10 倍以上,但脚本会导致服务器崩溃。我开始收到 httpd 错误,指出内存不足。我在当地时间凌晨 4 点运行这个脚本,目录大小只有 5GB,包含图像和所有内容。我究竟做错了什么?
gzip 压缩后的实际数据库文件只有 4.5mb。虽然包含图像的目录应该在 5GB 左右,但很多时候文件最终只有 400K。我不知道为什么会发生这种情况。
df -h 在我运行命令之前是
Filesystem Size Used Avail Use% Mounted on
/dev/vda3 73G 11G 58G 16% /
tmpfs 1.5G 0 1.5G 0% /dev/shm
/dev/vda1 477M 194M 258M 43% /boot
在 gzip 压缩目录期间
Filesystem Size Used Avail Use% Mounted on
/dev/vda3 73G 15G 55G 21% /
tmpfs 1.5G 0 1.5G 0% /dev/shm
/dev/vda1 477M 194M 258M 43% /boot
自由-h是
total used free shared buffers cached
Mem: 2.8G 2.0G 886M 268K 70M 825M
-/+ buffers/cache: 1.1G 1.7G
Swap: 1.0G 0B 1.0G
在 gzip 期间
total used free shared buffers cached
Mem: 2.8G 2.7G 74M 276K 42M 1.7G
-/+ buffers/cache: 1.0G 1.8G
Swap: 1.0G 132K 1.0G
我从来没有遇到过存储空间不足的情况,而且可用内存也从未低于 74M。