我对 Ubuntu 还很陌生,我的第一个任务是将一个带有 MySQL 数据库的网站复制到另一台服务器。两台服务器都是虚拟机,并且处于同一环境中。我拥有 IP 地址和登录凭据。
我当然可以从我的 Windows 计算机远程登录到两台机器(旧服务器有 Ubuntu 10.10,新服务器有 Ubuntu 12.04)。
现在我需要知道是否可以直接从一台 Ubuntu 服务器复制到另一台,或者先复制到我的计算机,然后再复制到另一台 Ubuntu 服务器。
或者可能有很多解决方案?
答案1
你可以使用 rsync 来实现这一点,
例子,
我们假设您有两台服务器的 ssh 访问权限,old.com 是旧服务器,两台服务器上的 uname 相同,要复制的文件树是 /var/somedir 登录到新服务器,
rsync-av 命令[电子邮件保护]:/var/somedir/* /var/somedir/
它将登录old.com并提示进行身份验证,然后建立文件列表并将内容复制到当前服务器上的目标。
我希望你能理解这一点...
谢谢
答案2
首先,你不能简单地走进魔多,我的意思是复制数据库。你需要这样做正确的。您需要确保没有正在进行的写入,然后确保所有内容都以 ACID 方式复制。您可以关闭数据库,移动它,然后意识到事情变得非常糟糕,因为它们是不同的版本......
幸运的是,mysql 自带了一个工具来做这件事,叫做mysqldump- 还有关于使用它的一个问题包含大量语法示例 - 应该是这样的mysql -u<user> -p < db_backup.dump
。我还建议检查版本,因为你可能需要运行升级脚本版本之间。移动 DUMP 文件,不要复制数据库。运行转储,运行升级脚本,测试。正如您所见,Mysql 上有很好的资源,因此请阅读并确保您知道自己在做什么。
如果你使用 postgres,还有pg_dump(语法非常优雅)。文件级备份文档在任何地方都是正确的——因为关闭服务器是在备份时不进行写入的最可靠方法,从而破坏一致性。
要移动转储文件,有很多方法安全FTP可能是速度与安全性的理想结合。您可以使用控制协议或者将它们下载到你的 Windows 系统,然后重新上传网络鸭。由于您已经拥有 SSH,这应该是执行此操作的最简单的方法。
Web 服务器配置和文件(例如,/etc/ 和 /var/www 的有效内容)应该可以复制,因为它们不会不断改变。
答案3
您可以使用scp
或rsync
直接在 Ubuntu 服务器之间发送文件/目录。
例如:
scp -r /local_dir/path user@otherhost:/remote_dir/path
可以使用数据库服务器软件(MySQL、Postegres 等)通常提供的备份/转储和恢复功能来迁移数据库。具体过程取决于您的数据库服务器。