mysql - 从服务器创建mysql备份,使用scp下载到本地并替换mamp数据库

标签 mysql bash macos terminal code-snippets

我正在创建一个要在 Mac OS X 终端 (bash) 中使用的代码片段,这将允许我一步执行以下操作:

  1. 通过 ssh 登录我的服务器
  2. 为我的 Wordpress 数据库创建 mysqldump 备份
  3. 将备份文件下载到本地硬盘
  4. 替换我的本地 Mamp Pro mysql 数据库

这个想法是创建我当前在线网站的本地版本来进行开发。到目前为止我有这个:

ssh server 'mysqldump -u root -p'mypassword' --single-transaction wordpress_database > wordpress_database.sql' && scp me@myserver.com:~/wordpress_database.sql /Users/me/Downloads/wordpress_database.sql && /Applications/MAMP/Library/bin/mysql -u root -p'mylocalpassword' wordpress_database < /Users/me/Downloads/wordpress_database.sql

显然我对此有点陌生,而且我认为其中有很多不必要的冗余。然而,它确实有效。哦,ssh 命令 ssh 服务器 正在工作,因为我在本地 .ssh 文件中创建了一个别名来执行该操作。

以下是我需要帮助的内容:

  1. 这个可以缩短吗?变得更简单了吗?
  2. 我这样做的方式好吗?有更好的办法吗?
  3. 如何添加 gzip 压缩?

我很感谢对此的任何指导。谢谢。

最佳答案

您可以一步将其从服务器转储到本地数据库(带有 gzip 压缩提示):

ssh server "mysqldump -u root -p'mypassword' --single-transaction wordpress_database | gzip -c" | gunzip -c | /Applications/MAMP/Library/bin/mysql -u root -p'mylocalpassword' wordpress_database

双引号是这里的关键,因为你想要 gzip在服务器上执行并且 gunzip在本地执行。

我还将我的 mysql 密码存储在 ~/.my.cnf (和 chmod 600 该文件)中,这样我就不必在命令行上提供它们(系统上的其他用户可以看到它们) ):

[mysql]
password=whatever

[mysqldump]
password=whatever

关于mysql - 从服务器创建mysql备份,使用scp下载到本地并替换mamp数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3135280/

相关文章:

mysql - 按日期选择最高/最大总和组

Bash - 如何以字节为单位列出文件大小

bash - 使用 awk 将数组字符串与 awk 中的字符串进行比较

php - 我如何在 Mac OS X Lion 上安装 php 5.4?

mysql - 如何禁止删除特定 mysql 表中的任何行?

php - Codeigniter 帮助 - Controller 中的事件记录和循环

mysql - mysql连接远程主机慢是正常的吗?

regex -\0 在 sed 中是什么意思?

mysql - 编译 Perl 的 DBD::mysql 时如何修复 "Symbol not found: _is_prefix"?

swift - macOS - Swift 4.0 容器 View 不显示 NSView