# data backup 数据备份命令

数据库备份命令,用于备份数据库结构以及数据至指定文件夹中。

TIP

数据库备份命令不仅可以用于备份 SSCMS 系统数据,还可用于任何需要将数据库备份至文件的场合。

# 用法

sscms data backup
    -c, --config=VALUE
    -d, --directory=VALUE
    --includes=VALUE
    --excludes=VALUE
    --max-rows=VALUE
    --page-size=VALUE
    -r, --repeat=VALUE
    -h, --help

可以设置可选参数控制备份选项。

# 选项

选项 简写 说明
--config -c 指定备份数据库的 SSCMS 配置文件文件名,默认为 sscms.json
--directory -d 指定保存备份文件的文件夹名称
--includes 指定需要备份的表,多个表用英文逗号隔开,默认备份所有表
--excludes 指定需要排除的表,多个表用英文逗号隔开
--max-rows 指定需要备份的表的最大行数,默认备份所有数据
--page-size 从数据库表中获取一次数据的行数,默认为 1000
--repeat -r 重复运行参数
--help -h 命令说明

备份命令将读取 -c--config 参数指定的 SSCMS 配置文件(可省略,默认为sscms.json),从中获取数据库连接字符串,进而将数据库备份到 -d 或者 --directory 参数指定文件夹中(可省略,默认为 backup/{yyyy-MM-dd})。

备份命令只支持完全备份,即备份命令将把数据库中所存的所有数据备份至文件夹中,如果数据库中数据量太大,请不要频繁使用备份命令,以免影响数据库性能。

# 示例

# 基本使用

例如我们希望备份指定的 SSCMS 系统数据,找到系统所在文件夹路径,将命令行切换到此文件夹,并运行备份命令:

cd E:\www\
./sscms data backup

可以看命令开始执行数据库备份操作,界面将显示备份进度:

欢迎使用 SiteServer Cli 命令行工具

数据库类型: SqlServer
连接字符串: Server=(local);Uid=sa;Pwd=123456;Database=cms;
备份文件夹: E:\www\backup\2019-01-20
-----------------------------------------------------------------------------
|                备份表名称                |                 总条数                 |
-----------------------------------------------------------------------------
|           _model_Content            |                 839                 |
|       _model_Content_Archive        |                  0                  |
|       sscms_AccessToken        |                 28                  |
|            sscms_Ad            |                  1                  |
|          sscms_AdArea          |                  1                  |
|        sscms_AdMaterial        |                  1                  |
|      sscms_Administrator       |                  9                  |
|  sscms_AdministratorsInRoles   |                 20                  |
|           sscms_Adv            |                  0                  |
|          sscms_Advert          |                  1                  |
|      sscms_Advertisement       |                  1                  |
|     sscms_AdvImageClassify     |                  0                  |
|     sscms_AdvImageContent      |                  0                  |
|           sscms_Area           |                  4                  |

...

|            ss_home_group            |                  0                  |
|         ss_home_group_user          |                  0                  |
|            ss_home_menu             |                  1                  |
|            ss_home_oauth            |                 16                  |
|              ss_input               |                  4                  |
|          ss_input_content           |                  6                  |
|           ss_input_field            |                 19                  |
|         ss_input_field_item         |                 89                  |
|               ss_jobs               |                  0                  |
|             ss_magazine             |                 17                  |
|         ss_magazine_article         |                 427                 |
|              ss_oauth               |                 412                 |
|           ss_oauth_login            |                  0                  |
|             ss_payment              |                 25                  |
|          ss_payment_record          |                 107                 |
|              ss_Photo               |                 10                  |
|               ss_poll               |                 33                  |
|            ss_poll_field            |                  9                  |
|         ss_poll_field_item          |                  0                  |
|            ss_poll_item             |                 20                  |
|             ss_poll_log             |                 13                  |
|             ss_pollitem             |                 80                  |
|             ss_polllog              |                 24                  |
|              ss_reward              |                 53                  |
|          ss_reward_record           |                 202                 |
|         ss_shopping_address         |                 50                  |
|          ss_shopping_area           |                  2                  |
|          ss_shopping_cart           |                 636                 |
|        ss_shopping_delivery         |                  5                  |
|          ss_shopping_order          |                 224                 |
|             ss_special              |                  0                  |
|          webgamex_comment           |                  0                  |
-----------------------------------------------------------------------------
恭喜,成功备份数据库至文件夹:E:\www\backup\2019-01-20!

备份命令将逐一遍历数据库中的表,将表中的内容完整导出至文件中,备份结束后,打开文件夹路径,将看到根目录下多了一个 backup 文件夹,可以看到里面的文件夹结构大致如下:

backup
└── 2019-01-20
    ├── model_Content
    |   ├── _metadata.json
    |   ├── 1.json
    |   └── 2.json
    ├── sscms_Administrator
    ├── sscms_AdministratorsInRoles
    ...

备份命令默认将备份存储在 backup 文件夹下的一个以当天日期命名的文件夹中,以方便多次备份后找到对应的备份文件。

数据库中的每个表均有一个以表名命名的文件夹,其中**_metadata.json**存储表的结构信息,1.json2.json等文件存储表数据信息。

# 指定备份存储文件夹

如果需要将备份文件存储在其他文件夹中,可以通过-d--directory=加文件夹名称的方式指定备份存储文件夹。

./sscms data backup -d mydir

备份命令将把所有备份数据数据存储在 mydir 文件夹中。

上次更新: 2023/9/16 下午2:15:25