
# 文件增量迁移
CDM支持对文件类数据源进行增量迁移，全量迁移完成之后，第二次运行作业时可以导出全部新增的文件，或者只导出特定的目录/文件。
目前CDM支持以下文件增量迁移方式：
1. **增量导出指定目录的文件**
   - 适用场景：源端数据源为文件类型（OBS/HDFS/FTP/SFTP）。这种增量迁移方式，只追加写入文件，不会更新或删除已存在的记录。
   
   - 关键配置：[文件/路径过滤器]+定时执行作业。
   
   - 前提条件：源端目录或文件名带有时间字段。
    
2. **增量导出指定时间以后的文件**
   - 适用场景：源端数据源为文件类型（OBS/HDFS/FTP/SFTP）。这里的指定时间，是指文件的修改时间，当文件的修改时间大于等于指定的起始时间，CDM才迁移该文件。
   
   - 关键配置：[时间过滤]+定时执行作业。
   
   - 前提条件：无。
    
![](https://support.huaweicloud.com/usermanual-dataartsstudio/public_sys-resources/note_3.0-zh-cn.png)
如果配置了时间宏变量，通过DataArts Studio数据开发调度CDM迁移作业时，系统会将时间宏变量替换为"数据开发作业计划启动时间-偏移量"，而不是"CDM作业实际启动时间-偏移量"。
 #### 文件/路径过滤器
- 参数位置：在创建表/文件迁移作业时，如果源端数据源为文件类型，那么源端作业参数的高级属性中可以看到"过滤类型"参数，该参数可选择：通配符或正则表达式。
- 参数原理："过滤类型"选择"通配符"时，CDM就可以通过用户配置的通配符过滤文件或路径，CDM只迁移满足指定条件的文件或路径。
- 配置样例：
  例如源端文件名带有时间字段"2017-10-15 20:25:26"，这个时刻生成的文件为"/opt/data/file_20171015202526.data"，则在创建作业时，参数配置如下：
  1. 过滤类型：选择"通配符"。
  
  2. 文件过滤器：配置为**"\*${dateformat(yyyyMMdd,-1,DAY)}\*"** （这是CDM支持的日期宏变量格式，详见[时间宏变量使用解析](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_0114.html#dataartsstudio_01_0114)）。
     图1文件过滤   
     ![](https://support.huaweicloud.com/usermanual-dataartsstudio/zh-cn_image_0000001485205780.png) 
  
  3. 配置作业定时自动执行，"重复周期"为1天。
    
这样每天就可以把昨天生成的文件都导入到目的端目录，实现增量同步。
文件增量迁移场景下，"路径过滤器"的使用方法同"文件过滤器"一样，需要路径名称里带有时间字段，这样可以定期增量同步指定目录下的所有文件。
 #### 时间过滤
- 参数位置：在创建表/文件迁移作业时，如果源端数据源为文件类型，那么源端作业配置下的高级属性中，"时间过滤"参数选择"是"。
- 参数原理："起始时间"和"终止时间"参数中输入时间值后，只有修改时间介于起始时间和终止时间之间（时间区间为左闭右开，即等于起始时间也在区间之内）的文件才会被CDM迁移。
- 配置样例：
  例如需要CDM只同步2021年1月1日\~2022年1月1日生成的文件到目的端，则参数配置如下：
  1. 时间过滤器：选择为"是"。
  
  2. 起始时间：配置为**2021-01-01 00:00:00**（格式要求为yyyy-MM-dd HH:mm:ss）。
  
  3. 终止时间：配置为**2022-01-01 00:00:00**（格式要求为yyyy-MM-dd HH:mm:ss）。
   
  图2时间过滤   
  ![](https://support.huaweicloud.com/usermanual-dataartsstudio/zh-cn_image_0000001485207228.png) 
这样CDM作业就只迁移2021年1月1日\~2022年1月1日时间段内生成的文件，下次作业再启动时就可以实现增量同步。
