欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

备份和迁移网站

shiping1 的头像

备份和迁移网站

原文地址 http://drupal.org/node/679054

本节提供有关如何备份网站,以及如何迁移一个网站(例如,从一台主机到另一台主机)的信息。

另外,还包括一些模块的备份,开发,迁移,导入的步骤

备份网站

原文地址:http://drupal.org/node/22281
备份的最佳做法
•在更新或升级之前,备份整个网站(也是迁移,复制,移动,替换的最佳办法)
•日期备份。保存到一个目录或文件的每一个标题,包括备份的日期。当你试图恢复失败的网站,可以立即找到最新的备份是哪一个。
•每个备份副本保存在不同的位置而不在你的网络服务器。请记住,如果数据不存在在三个地方,它不存在。如果您的网络服务器崩溃,那么所有的备份文件可能消失(见刚才提到恐慌)。
•询问您的ISP或网络主机的备份策略。最良好的网络主机有一个备份计划,间隔24小时执行。如果你没有,你每天手动备份您的网站,或者找到一个能执行计划的主机。再次强调下,数据存在少于三个地方,如果一个网站的数据不存在,表示他不存在。
 •除了您的主机的自动备份,需要定期自己做手动备份。根据您的网站的需求,定期运行一个单独的备份,每月,每周,每天.需要明白自己能忍受多大的数据损失。
 •记录和测试您的备份和恢复程序之前,你需要通过论坛和及时通信工具找到一些经验或者教训。
 •用逆向备份方法,恢复你的备份。

具体的备份策略

备份drupal网站,包括网站数据库和网站文件。

备份数据库

备份和恢复MySQL数据库的使用命令行覆盖在MySQL参考手册,在上一节的备份和恢复请注意对MyISAM表为基础,引用的参考手册。如果你在数据库中使用InnoDB表,请特别注意MySQL参考手册,第14.2.8节也有关于手册页做了备份和恢复使用bash shell脚本

一个图形化的实用工具,例如phpMyAdmin的,也可以进行备份还有在该网站上名为“ 我如何备份我的数据库或表的。“ 你还可以看看在phpMyAdminToolkit.Dump程序,根据其主页,是一个具有类似功能mysqldump的控制台应用程序。其是使用phpMyAdmin API的图形化工具。

如果你想备份一个更大的MySQL数据库与托管网 ​​络空间的phpMyAdmin,你可能会遇到问题,因为经常有一个PHP处理时间限制。脚本MySQLDumper或者Bigdump是有效的解决方法MySQLDumper还可以生成自动备份。

一种替代的解决方案是使用一个模块。备份和迁移,定时执行下载备份或保存在服务器上备份。您可以指定保存多少次的备份或者备份多久之后被删除。替代品数据库管理模块备份模块都从Drupal本身备份数据库表(备份模块将备份您的文件。)

如果您使用的是非MySQL数据库,该供应商的文件应该有备份的信息。

备份核心文件

安装的根目录中包含的所有文件,使Drupal正常工作。当然,你可能从 Drupal.org再次获得这些文件,但有自己的核心文件的副本是如此之快,高效。如果你在你的特定网站的核心文件编辑的东西,有一个核心文件的副本是必须的,因为该网站的变更是根目录的一部分。

作为一个建议,每月应备份的根目录中的所有内容。但升级之前始终备份核心文件在手册的其他部分,但最佳实践意味着备份的核心应该是一个普通的习惯。做到这一点建议,每月备份。当灾难袭来时,你不会担心你所做的任何改变。

备份非核心文件

贡献模块和其关联的第三方文件应备份,以及每月。如果您在上一节以上所述的最佳实践,坚持将您的贡献模块的核心文件,默认情况下,备份的一部分,因为他们存在根Drupal安装目录内。如果你没有备份您的整个根目录每月的带宽或存储资源,您必须备份/网站/ /模块/(版本5.x)或/网站/ example.com /模块/(版本4.7和低)。如果不这样做,可能会失去你当前版本的例子。试想试图恢复您的网站,现在不知道从Drupal.org下载该版本的模块,你该怎么办。

也有文件,是不是数据库的一部分,核心,或到您的网站是重要的贡献模块。你指定的目录在”管理>站点配置>文件系统“保存上传的图片,用户的图标,和其他的东西,你不想失去。如果您正在运行您的网站,在“私人”文件传输模式,机会是好,这个/文件/目录是不是在你的根Drupal安装,因此不会被备份在“备份核心文件“里。。

/网站/目录是另一个,你应该注意,因为它拥有大量的事情涉及到您的网站,如徽标和嵌入式图像。自定义主题,也存放在这里。

在高流量的网站,每日2次备份,并保存在过去的8份备份

 

备份你的网站(通过图形界面)

原文地址:http://drupal.org/upgrade/backing-your-site-gui
备份你的drupal文件
 使用ftp客户端,下载所有的drupal文件,保存到到本地"backup"文件夹。
备份你的数据库通过phpMyAdmin
•登录phpMyAdmin

•通过左侧下拉列表选择数据库..如果你升级一个网站,选择你的网站
• 点击”导出“选项卡
•点击”全部“

•选择”结构“和”数据“
•保存成文件
•点击”go“按钮,保存sql文件到桌面。

更详细请看

http://drupal.org/node/120627

phpMyAdmin使用手册

http://codex.wordpress.org/Backing_Up_Your_Database

数据库还原通过命令行

大多数网站的更新没有发生任何事件发生,你开始之前,数据库转储时,成功的,可以被丢弃或归档。然而,偶尔的事情不要去计划,当发生这种情况往往不是必须恢复数据库的备份,而调查到什么地方出了错。

重要事项:更新前恢复备份之前,你必须确保完全清空数据 库。Drupal的更新可能会重命名表或表中的数据重新组合成新的表,这些表通常不会被删除,当你恢复数据库备份。(例如,虽然mysqldump的增加 DROP / CREATE缺省转储的表行,它不仅表,它知道。)如果没有被删除,这些“新”表将导致错误在下一次尝试更新,如果忽略这些错误,因为事情开始出现工作, 你可能会遇到的问题,由于重复数据,旧数据或只是普通的数据库损坏后。

清空数据库

最简单的办法就是删除数据库,创建一个新的数据库:

mysql -h HOST -u USERNAME -pPASSWORD
drop database `DB_NAME`;
create database `DB_NAME` charset utf8;
quit

如果你没有通过shell创建数据库的权限,你必须手动删除所有的数据库表,前提是你已经备份了数据。(填写适当的第一行)

MYSQL=&quot;mysql -h HOST -u USERNAME -pPASSWORD -D DB_NAME&quot;<br />
$MYSQL -BNe &quot;show tables&quot; | awk &#39;{print &quot;set foreign_key_checks=0; drop table `&quot; $1 &quot;`;&quot;}&#39; | $MYSQL<br />
unset MYSQL

如果是共享数据库,你必须使用自己的表前缀。

从mysql dump恢复数据

一旦你确保所有数据库中的表已被删除,你可以恢复你的数据库备份使用:

mysql -h HOST -u USERNAME -pPASSWORD < your-db-dump.sql

注意:--add-drop-database 

不推荐使用--add-drop-database 的缘由是你需要使用 --database 参数,这个参数讲参入  use database 行到drump中,基本是硬编码。如果你有最佳方法,你需要一个临时网站来测试,然后才能改变线上的环境。你的2个数据库使用不同的名字。使用此选项可以 改变目标数据库,一旦子啊发生问题,只是覆盖了错误的数据库。

 

通过bash shell 脚本实现备份 还原

原文地址:http://drupal.org/node/59369

这2个脚本协同工作完成备份和还原。

脚本有2个用途:

  1. 创建Drupal的备份可以恢复到其原始位置
    例如:还原一个失败的升级或者从磁盘故障中恢复。
  2. 在2个drupal配置中转移数据
    e.g., backup a production instance and restore to a test instance 例如,备份一个产品实例,然后还原成新的测试实例。

以下脚本已经在linux系统,和windows系统中(使用Cygwin)验证。功能概述

一个完整的Drupal备份需要从数据库和文件系统的数据备份。这两个备份,然后必须依赖对方。

备份脚本使用tar命令执行文件系统备份和使用mysqldump 执行数据库备份。这个备份可以压缩成一个tar文件。这个tar文件包括备份日期。

还原脚本,解压缩备份文件,解压缩网站文件,执行数据库还原。

Drupal的实例备份或还原的备份在恢复脚本中由定义的变量指定。

使用说明

每个脚本都有详细的说明。

  • 恢复脚本防止意外恢复没有保障。如果你不明白它如何破坏你的系统鼓励你不使用它。
  • 备份脚本备份每一个在Drupal根目录的文件和目录。如果你有一个网站在子目录中的子域名网站的主要网站目录的备份将包括子网站。对于备份,这 只会膨胀你的备份文件。为恢复,这可能是灾难性的,因为你将恢复对本网站的所有文件系统。如果你有这种类型的配置,你必须定制tar命令作出选择性备份。
  • 这些脚本没有提供锁定了用户,而正在进行的备份或恢复。
  • 此脚本不理解Drupal的多站点配置
  • 备份脚本需要的所有文件/目录和恢复脚本需要读/写访问的读取访问。这有时是在主机配置的问题。
  • 因为备份和恢复阶段做了足够的临时空间必须是中间文件
  • 在脚本中使用的一些命令会有所不同操作系统之间。您可能需要为您的操作系统的定制命令。

多站点备份脚本http://drupal.org/node/310948

网站备份脚本http://drupal.org/node/59370

网站还原脚本http://drupal.org/node/59375

通过命令行备份网站

原文地址:http://drupal.org/upgrade/backing-your-site-command-line
 

备份文件

备份drupal目录下的文件到网站外的目录,下面介绍几种方法:

复制文件(包含 .htaccess 文件)到备份目录

cp -rp /path/to/drupal_site /path/to/backup_dir

The option -rp means copy recursive and preserve permissions.

复制文件(包含 .htaccess 文件)到压缩文件

请在drupal目录执行:

tar czf drupalbackup.tgz /path/to/drupal_site/

使用 use tar xzf drupalbackup.tgz 解压缩到新的文件夹.

备份数据库

备份数据库之前,请停止定时任务.

MySQLdump

创建一个数据库备份:

mysqldump -u USERNAME -p DATABASENAME &gt; /path/to/backup_dir/database-backup.sql

Drush

Drush  sql-dump命令创建一个数据库备份. 请在drupal根目录下执行:

drush sql-dump &gt; /path/to/backup_dir/database-backup.sql

用 drush help sql-dump可以获得更多的信息

If you have installed the module Backup & Migrate you can use the drush command bam-backup. From your Drupal directory execute:如果你安装了Backup & Migrate模块,你可以使用drush bam-backup命令,请在drupal根目录下执行:

drush bam-backup

drupal导出脚本(drupal6和低于drupal6的版本)

drupal数据库脚本可以根据你的数据库设置自动连接数据库,并创建一个备份:

  • Drupal that is 4.6 or 高于drupal 4.6:
    ./drupalsqldump.sh sites/default/settings.php &gt; /path/to/backup_dir/database-backup.sql
  • 低于4.6版本:
    ./drupalsqldump.sh includes/conf.php &gt; /path/to/backup_dir/database-backup.sql

PostgreSQL dump

使用PostgreSQL dump 备份
pg_dump -U [user] -h [host] [databasename] &gt; dump.sql
 或者
pg_dump -U [user] -W -h [host] [databasename] -F c &gt; dump.pg_restore.format

对于大数据库,极力推荐使用下面方法,通过pipe自动生成压缩包:

pg_dump -U [user] -W -h [host] [databasename] | gzip -c &gt; dump.sql.gz

还原命令为: gunzip -c dump.sql.gz | psql [options]

网站迁移

原文地址http://drupal.org/node/776864

 

如果你变更了主机,或者保持开发和线上独立,你需要迁移你的drupal站点。这是一个线下工作,或许仅仅是一个检查列表,你需要根据你的需要和服务器环境作出相应的调整。这个过程包括单站,多站(多站在windows apache 或者 多站在linux)的迁移等。

准备工作

记录源主机和目标主机安装的php任何差异,包括bugs,features,模块,配置,版本等,另外还有mysql 和 apache的差异。

准备一些工具和命令,譬如,如何上传和下载文件,管理两台机器上的MySQL等压缩文件,在mysq下更改权限和所有者。有Drupal的工具,包括其中 一些步骤,例如备份和恢复数据,但他们不是应对所有问题。你应该明白在这个过程中,那些工具能保证你,那些工具不利于迁移工程。

目标主机检查清单:你必须确认目标主机支持drupal需要的所有的特征(可写,可覆盖)。如果你从一个好主机迁移到一个此主机,drupal不能正常运行,可能不是你的迁移失败,而是目标主机不能正确支持drupal。

旧站点

  1. 记录使用的模块,包括他们的版本和路径。模块网站文档可以减轻这方面的工作
  2. 记录用于管理/设置/文件系统(admin/settings/file-system)的临时缓存路径,还原数据库之后并保持2个站点使用相同的路径。
  3. 设置网站离线模式,管理/维护模式( Administer/Site maintenance),选择“离线”(Off line)。
  4. 考虑迁移之前更新 Drupal核心和模块
  5. 关闭“简洁链接” (Administer/"Clean URLs") .
  6. 清除缓存数据。
  7. 导出数据库数据。你可以使用mysql管理员或者phpmyadmin,导出成.sql文件。你不需要下载,因为这个文件就在你的计算机上。
    • 在mysql 管理界面,第一次链接需要您输入密码,点击备份链接,从数据库列表中选择要备份的数据库,被移动到右侧的备份内容列表里,选择保存路径,点击“确认”按钮。
  8. 如果你的网站是在线服务器,请考虑是否设置你的网站在线。维护模式为在线。当然,此后的的所有提交(评论,论坛等)都将丢失。因此,你可以考虑通过修改权限来阻止用户评论。
  9. 复制drupal所有的代码,并且下载到本地。并且传送到新的目标机器。这样,可以在新的目标机器上使用该备份。
  10. 复制网站文件和任何相关的路径(譬如图片路径),并下载到本地,上传到新的目标机器。erver.

源主机和目标主机之间

这些步骤需要在你自己的电脑上执行,和源主机和目标主机上执行不同。

在数据库的数据包括一些硬编码,这些可能不适合新的目标主机。你可以使用sql 查询来重建数据库并改变这些,或者你可以使用文本编辑器修改.sql文件。利用文本搜索可以得到一些意想不到的变更区域。如果很慢,你可以考虑以下:

  1. 文件列表(文件表中的路径)[The files list (field "filepath" in table "files")]
  2. 网站url。一些节点链接和引用指向了网站绝对路径,另外在日志文件中也有很多链接。在新的目标网站,这些并不是合适的。你可以考虑修改每个表。
  3. 上述变更引起的变化。例如消息模块,在消息存储中为每条消息存储了网站url。我相信图像(imagefield)模块类似文件清单的列表。
  4. 什么工具创建新的数据库(参见下面的导入数据)
  5. 数据库名称。你的托管公司可能需要所有的数据库表以“yourname_”开始。此外,他们可能还限制字符长度。
  6. 下面的命令能从数据库dump文件中除去数据,当drupal数据库不能从一个数据库迁移到另外的数据库sed -E -e "/^INSERT INTO \`(cache|watchdog|sessions)/d" < /path/to/dump.sql > /path/to/dump-stripped.sql
    如果你的数据库使用表前缀,你需要调整正则表达式

如果你移动一个在线网站从一个主机到另一台主机,你需要调整dns配置指向新的主机。

在目标主机

现在在目标主机上执行:

  1. 上传整个drupal代码到目标主机,包括内核,模块,主题。或者重新构建。一些人喜欢安装新的内核。
  2. Upload or copy the files directory and any similar directories (such as image galleries) to the location you chose when editing the .sql file上传文件夹和相关文件夹(譬如图像文件)到你选择的路径。
  3. 利用drupal用户创建数据库。如果你的托管公司需要,所有表以 "yourName_"开始。此外,他们可能限制字符长度。如果你可以创建并且你有.sql文件,则跳过这步。
  4. 上传并导入数据文件。如果你不能创建数据库,你可以需要你主机上的其他工具来完成创建数据库。这时,你需要删除.sql里的所有的"create database"行("create database if not exists"除外)。你可能发现对于phpMyAdmin来说,数据库过大而不能上传。一些主机提供了mysql administrator 用户,用来接收大文件。如果你能ssh接入到目标主机,你可以使用mysql 命令"mysql --user=user_name --password=your_password database_name" 登录mysql,然后使用source命令导入sql文件。 "source database_backup.sql".
  5. 修改settings.php文件,修改数据库连接。使用正确的用户名密码,保证能连接目标主机的mysql。你需要调整mysql目标地址来适用当前的环境。
  6. 有时,需要修改.htaccess 文件的rewrite规则 
  7. 登录新站点,使用“/?q=user”登录,修改维护模式,开启简洁url。
  8. 调整网站配置,包括email地址,修改文件路径,修改临时缓存
  9. 调整模块。譬如php从5.2.8升级到5.3.0,一些模块不能正常工作。通过大量的错误信息,搜索可能的解决方案。或许不得不作出以下调整,但不限于
    • 在php.ini设置datemezone
    • 为内核或者模块打补丁
    • 使用开发板代替alpha版本
    • 删除不工作的模块
  10. 检查状态报告。运行cron,如果drupal建议。
  11. 你的新站点和旧站点一模一样了。你可以修改主题或者主题颜色增强视觉效果。
  12. 调整性能参数,配置,性能(Administer → Site configuration → Performance.)
  13. 当做完所有的工作,你修改维护模式为在线。
  14. 设置cron任务。
  15. 如果你的新drupal站点为公开访问,设置dns解析到新的目标主机ip。如果你的站点修改域名提供商,你更新你的合同。

 
来自 http://drupalchina.cn/book/export/html/781

普通分类: