我正在使用 mysql-5.5 和 rhel5,我的意图是使用 mysqldump 进行加密备份和压缩备份
因为我使用mysqldump如下
mysqldump -u root -p db_name | gzip >file_name.sql.gz
它将提供压缩备份但不加密备份
我正在使用 mysql-5.5 和 rhel5,我的意图是使用 mysqldump 进行加密备份和压缩备份
因为我使用mysqldump如下
mysqldump -u root -p db_name | gzip >file_name.sql.gz
它将提供压缩备份但不加密备份
这个怎么样:
mysqldump -u root -p db_name | gpg --encrypt -r 'user_id' | gzip >file_name.sql.gz
当然,您需要要为其加密的用户的公钥。
例如
gpg --import keyfile
除非您真的喜欢 GPG,否则不要使用 GPG,坦率地说,有点矫枉过正,您可以使用 OpenSSL,它可能是内置的,没有真正的依赖结构,可以轻松进行可移植和可解密的备份。通过这种方式,您可以轻松地在几乎任何 Linux 系统(和许多其他平台)上解密备份,而无需任何密钥环,只需知道密码。
在此链接上阅读有关如何操作的更多信息。
另请注意,-p
通过命令行使用是非常糟糕的做法,因为密码可以通过ps aux
.
我建议使用openssl
aspgp
来减慢大文件的速度。
到目前为止,我在工作中经常使用的最佳解决方案是mysqldump-secure。
它提供了 openssl 加密和压缩以及其他更多功能,甚至还附带了一个 nagios 监控插件。
备份一个数据库,更改里面的内容 [..]
mysqldump -u root --single-transaction [DataBaseName] | gzip | openssl enc -pbkdf2 -k [MyPassword] > database.sql.zip.enc
分别备份所有数据库:
date=`date "+%Y%m%d"`
for DB in $(mysql -u root -e 'show databases' -s --skip-column-names); do
mysqldump -u root --single-transaction $DB | gzip | openssl enc -pbkdf2 -k [MyPassword] > db-$DB-$date.sql.gz.enc;
done
我使用以下 Bash 脚本,该脚本使用 Dropbox 将备份直接同步到我们自己的公司服务器(然后自动备份该数据)。用您自己的替换脚本变量。然后我只需将它添加到我的 crontab 中,每 12 小时运行一次。
FILENAME=dbname.$(date +%Y-%m-%d-%H-%M)
SQLFILE=/root/Desktop/$FILENAME.sql
ZIPFILE=/root/Desktop/$FILENAME.zip
GPGFILE=/root/Dropbox/SQL-Backups/$FILENAME.gpg
mysqldump --user=dbuser --password=password --port=3306 --default-character-set=utf8 --single-transaction=TRUE --databases "dbname" --result-file="$SQLFILE"
zip -9 $ZIPFILE $SQLFILE
gpg --output "$GPGFILE" --encrypt --recipient "recipient@company.com" "$ZIPFILE"
unlink $ZIPFILE
unlink $SQLFILE
这使用 GnuPG 加密生成的压缩 SQL 转储。切记永远不要将私钥导入Web 服务器。Web 服务器的 GPG 设置只需要公钥。
您可以使用适用于大多数平台的GPG 软件来创建您的密钥并将公钥发布到密钥服务器。