我正在使用 cron 作业每小时进行一次备份,现在,我想默认将这些备份放到另一台服务器上。
我的脚本如下:
mysqldump -u db_user -p db_password db_name| gzip > /current/path/for/backups/backup_$(date).sql.gz
我该怎么做才能将当前路径更改为另一台服务器上的新路径?
答案1
您可以在目标上创建一个共享文件夹并将其挂载到 mysql 服务器上,然后在脚本中将目标路径指定到该挂载文件夹。这应该可行。或者,您可以启动 scp 连接以将内容复制到目标服务器。
答案2
如果您不想将文件存储在本地机器上,您可以尝试以下步骤:
mysqldump -u db_user -p db_password db_name| ssh [email protected] "cat > /path/to/dump.sql"
在传输之前压缩文件(ssh
也会尝试压缩其流量):
mysqldump -u db_user -p db_password db_name| gzip | ssh [email protected] "cat > /path/to/dump.sql.gz"
cat
在您的远程系统上,如果您将流导入名为 的文件中,则可能会自动解压缩该流.gz
。在这种情况下,只需使用另一个后缀。
答案3
我大多数时候的做法是:备份,复制到另一台服务器,然后从源中删除
mysqldump -u db_user -p db_password db_name| gzip > /current/path/for/backups/backup_$(date).sql.gz;
#Searching, moving to other server and deleting backup files from source.
cd /current/path/for/backups/backup_$(date).sql.gz;
for f in *.gz
do
scp -pr $f hostnameofotherserver:/destination/path/mysql/backup
wait
echo "Removing $f..."
rm -f $f
done
供参考SSH 密钥设置(每次都无需密码)
http://blog.secaserver.com/2011/07/mysql-daily-backup-and-transfer-to-other-server/