我正试图实现一种快速的方法来做备份,并下载一个远程mysql数据库到我的本地计算机,只使用终端。远程服务器使用ssh密钥进行身份验证。我可以通过在终端上运行七个顺序命令来完成这一任务,其中一些在服务器上执行,另一些在本地机器上执行:
1)使用ssh键连接到远程服务器;2)将数据库转储到远程目录;3)从服务器注销;4)将备份下载到我的本地计算机;5)再次连接到服务器;6)从远程目录中删除备份;7)注销。
#1 ssh -i my_rsa_key my_user@my_domain.tld
#2 mysqldump -u my_db_user -pmy_db_password my_db > my_path_to_backup_directory/backup.sql
#3 logout
#4 rsync -chavzP -e 'ssh -i my_rsa_key -C -c blowfish' my_user@my_domain.tld:/my_path_to_backup_directory/backup.sql /my_path_to_local_directory
#5 ssh -i my_rsa_key my_user@my_domain.tld
#6 rm my_path_to_backup_directory/backup.sql
#7 logout问题1:这个工作流可以吗?还是有一种“更干净”的方法?问题2:我能否在一个批处理中自动执行这些命令,只需在终端中输入一个命令,并完成所有七个步骤?我已经尝试过用
&&但是我想它不起作用,因为我从本地机器执行部分命令(比如rsync),从远程执行部分命令(比如mysqldump)。
感谢所有的帮助,谢谢。
发布于 2015-11-18 18:22:08
让ssh运行mysqldump命令,但不要将其重定向到文件。这将使stdout从mysqldump返回到本地计算机,在那里您可以将其重定向到本地文件。
ssh -i my_rsa_key my_user@my_domain.tld 'mysqldump -u my_db_user -pmy_db_password my_db' > /local/path/to/store/backup.sqlhttps://serverfault.com/questions/737316
复制相似问题