我想创建一个 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