Cron 作业:转储并 scp tar 转储到远程服务器

Cron 作业:转储并 scp tar 转储到远程服务器

我想创建一个 cron 作业,转储 MySQL 数据库并tar使用日期|小时|分钟保存转储,然后scp将其发送到远程服务器。

0 */2 * * * mysqldump -uroot myBase>myBase.sql && tar -zcf /var/backups/myBase`-date +\%Y\%m\%d\%H\%M\%S`.tar.gz myBase.sql && ...

现在我缺少了这一scp部分。

我不知道如何获取.tar.gz新创建的文件及其日期/小时/分钟后缀。

答案1

不需要scp,只需压缩文件并将其写入远程路径就足够了。

tar cvzf - /path/to/myBase.sql | ssh USER@HOST "dd of=/path/to/backups/myBase$(date +\%Y\%m\%d\%H\%M\%S).tar.gz"

-告诉命令tar不要创建输出文件,而是将输出写入标准输出。请参阅曼塔尔

cat >/path/to/bsckups/...也可以使用 而不是dd

您甚至可以使用rsync-z传输之前比较文件的选项,但它会在远程路径传输后解压缩。

或者,如果压缩不是问题的话,您可以直接转储到远程路径。

mysqldump .... | ssh USER@HOST "dd ..."

您还可以在远程服务器(现在是本地服务器)中使用如下-h选项mysqldump并从本地服务器(现在是远程服务器)转储:

mysqldump -h HOSTNAME/IP ...  > /path/in/local

相关内容