Magento 2 代码库和数据库备份脚本

2023-11-11

本教程将帮助您使用 shell 脚本自动执行 Magento2 代码库和数据库备份过程。该脚本将按计划的时间间隔执行自动备份。该脚本还能够根据配置删除较旧的备份。

设置Magerun2

您需要在系统上下载并配置 Magerun2 脚本。


wget https://files.magerun.net/n98-magerun2.phar
mv n98-magerun2.phar /usr/local/bin/n98-magerun2
chmod +x /usr/local/bin/n98-magerun2 
  

下载外壳脚本

您可以从以下位置下载 Magento2 备份脚本here。或者,使用以下命令使用 wget 命令下载脚本。


wget https://tecadmin.net/wp-content/downloads/scripts/magento2-backup.sh
  

您还可以复制下面的脚本并将其粘贴到您计算机上的文件中。


#!/bin/bash

#######################################################################################
##
##   Magento 2 database and codebase backup script
##   Written By: Rahul Kumar
##   Written on: Mar 06, 2020
##   Last Update: Mar 11, 2020
##
#######################################################################################

################## Modify below values  ###############################################


MAGENTO_DOCUMENT_ROOT="/var/www/magento2"
BACKUP_PATH="/var/www/magento2/var/backups"

BACKUP_RETAIN_DAYS=30     # Number of days to keep a local backup copy

GZIP="/bin/gzip"
RM="/bin/rm"
MKDIR="/bin/mkdir"
N98_MAGERUN2="/usr/local/bin/n98-magerun2"



#######################################################################################
##################              Do not change below values              ###############

export PATH=/bin:/usr/bin:/usr/local/bin
TODAY="$(date "+%Y-%m-%d-%H-%M")"
CURRENT_BACKUP_DIR="${BACKUP_PATH}/${TODAY}"

#######################################################################################
##################              Functions               ###############################

exit_on_error(){
        echo -e "$@"
        exit 99
}

maintenance_mode(){
        ${N98_MAGERUN2} sys:maintenance ${1} --skip-root-check --root-dir=${MAGENTO_DOCUMENT_ROOT}
}

check_cmds(){
    [ ! -x ${GZIP} ] && exit_on_error "FILENAME $GZIP does not exists. Make sure correct path is set in config section."
    [ ! -x ${RM} ] && exit_on_error "FILENAME $RM does not exists. Make sure correct path is set in config section."
    [ ! -x ${MKDIR} ] && exit_on_error "FILENAME $MKDIR does not exists. Make sure correct path is set config section."
    [ ! -x ${N98_MAGERUN2} ] && exit_on_error "FILENAME $N98_MAGERUN2 does not exists. \nDownload script from https://files.magerun.net/ and Make sure correct path is set in config section."
}

create_backup_dir(){
        [ ! -d ${CURRENT_BACKUP_DIR} ] && ${MKDIR} -p ${CURRENT_BACKUP_DIR}
}

database_backup(){

        ${N98_MAGERUN2} --skip-root-check --root-dir=${MAGENTO_DOCUMENT_ROOT} db:dump ${CURRENT_BACKUP_DIR}/database-${TODAY}.sql

        if [ $? -eq 0 ]; then
                echo "Database backup successfully completed"
        else
                maintenance_mode --off    ##### Disable mainenence even database backup failed
                exit_on_error "Database backup failed. "
        fi
}



codebase_backup(){

        cd $MAGENTO_DOCUMENT_ROOT && \
        tar -cpzf ${CURRENT_BACKUP_DIR}/codebase-${TODAY}.tar.gz --exclude=var/* .

        if [ $? -eq 0 ]; then
                echo "Codebase backup successfully completed"
        else
                maintenance_mode --off    ##### Disable mainenence even codebase backup failed
                exit_on_error "Codebase backup failed. "
        fi
}


cleanup_old_backup(){

        REMOVE_DIR_NAME=`date "+%Y-%m-%d-%H-%M" --date="${BACKUP_RETAIN_DAYS} days ago"`

        if [ ! -z ${BACKUP_PATH} ]; then
                  cd ${BACKUP_PATH}
                  if [ ! -z ${REMOVE_DIR_NAME} ] && [ -d ${REMOVE_DIR_NAME} ]; then
                                rm -rf ${REMOVE_DIR_NAME}
                  fi
        fi
}

########################################################################################
##################              Main (Calling functions)           #####################

check_cmds
create_backup_dir
maintenance_mode --on
database_backup
codebase_backup
maintenance_mode --off
cleanup_old_backup


##########################################################################################
##################                      Script Ends Here                ##################
##########################################################################################
  

计划备份脚本

安排此脚本使用crontab在您的系统上每天运行。使用以下命令编辑 crontab 配置:


crontab -e
  

并在文件末尾添加以下条目。


0 0 * * * sh magento2-backup.sh
  

保存文件并关闭。您已成功安排 cronjob 在每天中午 12:00 运行。了解有关使用 cronjob 的更多信息阅读本教程.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Magento 2 代码库和数据库备份脚本 的相关文章

  • Magento Connect Manager 和 ftp 写入文件权限

    将我的网站从开发域转移到实时域后 我尝试使用 magento 连接管理器安装扩展 但是我不断收到 CONNECT ERROR Please check for sufficient ftp write file permissions Yo
  • RabbitMQ:如何创建和恢复备份

    我是 RabbitMQ 的新手 我需要一些帮助 如何备份和恢复到RabbitMQ 以及我需要保存哪些重要数据 谢谢 如果您安装了管理插件 您可以在Overview页 在底部你会看到导入 导出定义您可以使用它来下载代理的 JSON 表示形式
  • 根据产品属性在 Magento 中创建购物车规则

    我在一个类别中有产品 针 有些以 100 支为一包出售 有些以 500 支为一包出售 盒子中的针数被设置为产品属性 我想根据购物车中的针总数应用购物车规则 F x 如果您购买 1000 2000 根针头 无论 500 100 包的组合如何
  • 访问 Magento 购物车和/或结帐中的运费

    请注意 这个问题是关于运费 而不是价格 有一个重要的区别 即运输方式为店主支付的费用是多少 而不是客户支付的费用 The shipping tablerate数据库表包括一个cost字段 该字段填充在Mage Shipping Model
  • Magento 设置脚本中的 ALTER TABLE 不使用 SQL

    乔纳森 戴 https stackoverflow com users 336905 jonathan day says 更新不应采用以下形式 SQL命令 我没遇到过 任何 DDL 或 DML 语句不能 通过 Magento 的配置执行 结
  • 如何使用批处理文件复制(和增量)文件的多个实例

    我需要创建一个批处理文件来复制文件并在将其放置到目的地时递增它 例子 copy C TEMP MyDoc txt E MyData 本质上 我需要这个复制命令在每次启动时进行复制 现在效果很好 我希望它增加文件名而不是覆盖它 如果我运行此命
  • 如何在 iOS 中注册自定义文件类型

    我目前正在创建一个应用程序 我想让用户在其中备份他们的文件 plist m4a 我压缩文件并将扩展名更改为自定义扩展名 专门针对我的应用程序 例如 MyBackup 然后 用户可以通过电子邮件或 iTunes 文件共享进行导出 我已经阅读过
  • 使用按钮添加自定义折扣订单总计

    我的模块带有自定义折扣 没问题 配置 xml
  • 创建单个随机 Magento 优惠券

    我遇到了一些麻烦 我想要做的是每次有人订阅我们的时事通讯时 在 Magento 中自动生成一个随机优惠券代码 这张优惠券可减 10 美元 并且有exp 订阅后两周的日期 因此 我正在尝试编写一个简单的脚本 当提交 订阅我们的时事通讯 表单时
  • Magento:获取给定产品的购物车数量

    我使用这个代码 items Mage getModel checkout cart gt getQuote gt getAllItems items Mage getSingleton checkout session gt getQuot
  • Parse.com 的现实数据备份方法

    我们正在使用 Parse com 构建一个 iOS 应用程序 但仍然找不到有效备份数据的正确方法 作为前提 我们已经并且将会有很多数据存储行 假设我们有一个包含 100 万行的类 假设我们已对其进行备份 然后希望在发生危险情况 例如生产中的
  • 在 Magento 中编辑产品时 MySQL 错误

    这是 v 1 4 1 1 Magento 从 v 1 3 2 4 升级当我尝试编辑产品时 出现错误消息 exception Zend Db Statement Exception with message SQLSTATE 23000 In
  • 通过网络恢复数据库备份

    如何通过网络使用 SQL Server 2005 恢复数据库备份 我记得以前这样做过 但这样做的方式有些奇怪 您几乎没有选择使用网络文件作为备份源 在与 MS SQL Server 相同的用户下映射网络驱动器 路径 托管文件 使用 xp c
  • 如何以 Magento 方式实现库存过滤器?

    在我的 magento 网站上可以看到缺货的产品 我想要在分层导航中添加一个自定义过滤器 其中显示 排除缺货 当客户单击它时 应该隐藏缺货产品 默认情况下 我在 系统 gt 配置 gt 目录 gt 库存 下启用显示 显示缺货产品 即我希望客
  • Magento 中的 jquery/prototype 冲突

    这是一个基于 Themeforest 的 Acumen 主题的 Magento 商店 出乎意料的是 jquery 的东西现在不起作用了 Acumen 通过 magento 静态块加载 jquery 但这些都没有被触及 昨天我正在努力添加 j
  • Magento - AJAX 将产品页面元素调用到类别页面。选择框未填充

    我正在尝试在我的 Magento 商店上创建 ajax 快速视图 或 快速购物车 类型功能 一种将鼠标悬停在产品上并可以选择在灯箱中 快速查看 它而不是转到产品页面的方式 我正在使用一个非常简单的 jQuery Ajax 调用 如下所示 j
  • 无法打开备份设备。操作系统错误5

    下面是我用来备份的查询 创建一个 bak 我的数据库 但是 每当我运行它时 我总是收到此错误消息 消息 3201 16 级 状态 1 第 1 行无法打开备份设备 C Users Me Desktop Backup MyDB Bak 操作系统
  • 下订单时如何在 Magento 中触发电子邮件?

    我需要以下问题的解决方案 1 客户下订单 2 店主收到没有价格信息的电子邮件 例如装箱单 我需要编辑哪些文件 我读过很多帖子 但他们似乎没有提到文件路径 Thx 实现这一目标的两种可能方法 您可以为该类创建模型重写Mage Sales Mo
  • magento 控制器的动态路由器名称

    我将如何创建一个具有动态操作名称的控制器的自定义模块 从某种意义上说 它可以由用户在管理区域中随意配置并在自定义模块中自动更新 您可以在控制器中重写此方法 public function getActionMethodName action
  • 将 Google 信任徽章添加到 Magento

    我正在尝试将 Google Trust Badge 添加到我的 magento 商店 我尝试在 Magento 网站上搜索扩展程序 但找不到 我是否需要将以下代码粘贴到产品和结账页面 还是必须对其进行更改 如果有人能引导我走向正确的方向 我

随机推荐

  • 如何在 Ubuntu 18.04 中添加交换空间

    交换对于需要比物理可用内存更多的 RAM 的系统非常有用 如果内存已满并且系统需要更多 RAM 才能正常运行应用程序 它会检查交换空间并在那里传输文件 一般来说 交换区是硬盘的一部分 用作系统上的 RAM 我有一个正在运行的虚拟机 上面没有
  • 如何在 Apache 中配置 X-Frame-Options

    X Frame Options 用作 HTTP 响应标头 这可以防止您的网站内容嵌入到其他网站中 根据此值 浏览器允许其他站点在 iframe 中打开网页 它还可以保护您的 Apache Web 服务器免受点击劫持攻击 X Frame Op
  • 如何在基于 Debian 的系统上从源代码安装 Wine

    作为 Windows 程序的狂热用户 您可能会发现有时需要在 Ubuntu 系统上使用特定程序 尽管还有其他选项 例如虚拟机或 Wine 等程序 它有助于在 Linux 上运行 Windows 程序 但它们涉及一些工作 而且并不是运行这些程
  • 了解互联网协议 (IP)

    数字时代的定义是连通性 从个人消息传递到商业通信再到国际政府关系 几乎所有交互都是通过万维网进行的 互联网协议 IP 是这个庞大网络的核心 可确保通信顺畅可靠 本文旨在阐明我们数字生活的这一基本方面 什么是互联网协议 IP 从最广泛的意义上
  • 如何使用 Rsyslog 和 MySQL 设置 LogAnalyzer

    本文是文章的第二部分使用 MySQL 和 LogAnalyzer 设置 Rsyslog在 CentOS RHEL 系统上 在里面第一部分我们已经将Rsyslog与MySQL数据库服务器集成 所有日志现在都保存在数据库中 下面是我们在第 1
  • 如何在 Ubuntu 22.04 上安装 Linux、Nginx、MySQL 和 PHP(LEMP Stack)

    Linux操作系统是非常流行且广泛使用的服务器操作系统 它为世界上大多数网站提供支持 包括雅虎 谷歌和 Facebook 等一些最著名的网站 逻辑首字母缩略词 LAMP 通常用来指自由和开源软件的混合物 这些软件经常一起使用来创建可以处理动
  • 如何统治科技世界?

    谷歌 Facebook 苹果和微软等科技巨头正在真正统治世界 他们不仅在商业和技术领域做出了贡献 而且还大力投资于社会责任项目 当他们从车库或大学宿舍起步时 是什么让他们成为科技界的巨头 他们的成功有很多因素 但所有这些科技巨头都有一些共同
  • 如何在 Debian 11/10 上安装 Tomcat 10

    Apache Tomcat 是一个开源 Web 服务器 带有用于发布基于 Java 的 Web 应用程序的 Servlet 容器 Tomcat 是由 Apache 软件基金会支持下的开放开发者社区开发和维护的 截至目前 Tomcat 10
  • 掌握 Bash 中的数字比较:综合指南

    Bash 是 Linux 和 Unix 系统中流行的命令行 shell 允许用户通过运行脚本或执行命令来有效地执行各种任务 编写 Bash 脚本的一个关键方面是能够根据变量值或命令输出做出决策 一项常见的决策任务是比较数值 本文提供了掌握
  • 如何并排放置两个 Div 元素

    在 Web 开发中 定位 HTML 元素的方法有无数种 一种常见的布局要求是并排放置两个 div 元素 这种布局在网页设计中经常使用 特别是当需要将内容水平分成不同的部分时 有多种方法可以实现此布局 包括使用 float flexbox 和
  • 如何在 RHEL 和 CentOS Stream 9 上安装 PHP 8.2-7.4

    PHP 是一种流行的脚本语言 用于开发动态 Web 应用程序 它是一种开源编程语言 可以轻松安装在包括 CentOS 9 在内的各种操作系统上 在本文中 我们将引导您完成在 CentOS 9 上安装 PHP 的步骤 在开始之前 请确保您拥有
  • Linux 中使用 GPG 密钥对的文件加密

    GPG 基本文件加密不需要公钥 私钥 但为了使加密文件更安全 您可以使用 RSA DSA 算法 这些算法生成公钥和私钥来加密文件 本文将帮助您在 Linux 中使用 GPG 密钥对完成以下三项文件加密任务 创建密钥对 为同一用户帐户本地加密
  • 了解基本的 Git 工作流程:添加、提交、推送

    在软件开发领域 版本控制至关重要 在各种可用的版本控制系统中 Git 因其稳健性 灵活性和分布式架构而成为行业标准 在本文中 我们将重点介绍基本 Git 工作流程的基本步骤 添加 提交和推送 了解 Git 在深入研究 Git 工作流程的复杂
  • 10 个适合旧电脑的最佳轻量级 Linux 发行版

    随着计算机的老化 其性能不可避免地会下降 操作系统的响应速度也会降低 对于想要继续使用旧硬件但受到可用资源限制的用户来说 这可能会令人沮丧 幸运的是 Linux 提供了各种针对旧计算机进行优化的轻量级发行版 使它们能够更流畅 更高效地运行
  • 如何在 CentOS/RHEL 7 和 Fedora 上安装 Python 3.9

    Python 是一种非常流行 用途广泛且易于学习的编程语言 广泛应用于从 Web 开发和数据分析到人工智能和机器学习的各个行业和应用程序 Python 3 9 是该语言的最新版本之一 提供了改进的性能和许多新功能 在本教程中 我们将指导您完
  • 如何在 Linux 上的 VirtualBox 中从 USB 驱动器启动

    使用 USB 启动物理机要容易得多 但 VirtualBox 不提供直接选择从 USB 启动的方法 因此 如果您有可启动 USB 驱动器 那么本文将帮助您了解如何使用可启动 USB 创建 VirtualBox 虚拟机 对于这个例子 我已经创
  • 如何在 Debian 9 Stretch 上安装 PHP(7.4、7.3 和 5.6)

    PHP 7 4 是可在 Debian 9 Stretch Linux 计算机上安装的最新版本 Ubuntu 用户可以访问我们的教程在 Ubuntu 上安装 PHP 7 本教程适用于 Debian 9 Stretch 用户在其系统上安装 PH
  • 如何在Linux终端上访问远程邮箱

    Linux 系统有大量的图形电子邮件客户端 您可以轻松安装它们以通过 POP IMAP 协议访问远程系统的邮箱 对于没有GUI界面的Linux服务器版本可以使用命令行邮件客户端访问远程邮箱 本教程将帮助您在Linux终端上使用POP IMA
  • Bash – 如何获取未来的日期和时间

    Linuxdate命令显示系统的当前日期和时间 在编写 shell 脚本时 我意识到有时我们需要查找未来的日期 例如 10 天 2 个月或 1 年之后的日期等 date 命令提供了一个选项来显示未来的日期 如所述 d date STRING
  • Magento 2 代码库和数据库备份脚本

    本教程将帮助您使用 shell 脚本自动执行 Magento2 代码库和数据库备份过程 该脚本将按计划的时间间隔执行自动备份 该脚本还能够根据配置删除较旧的备份 设置Magerun2 您需要在系统上下载并配置 Magerun2 脚本 wge