
# 文件预置
#### 业务场景示例
需要在服务器上的所有云手机中预置文件。例如：推流二进制文件、保活脚本文件、应用行为监控文件等。
#### 操作步骤
1. 参考[获取云手机列表](https://support.huaweicloud.com/bestpractice-cph/cph_bp_0046.html)，从列表中选定一台云手机，将需要打包的文件放入到该云手机的目标路径下。
   例如：服务器上云手机需要在/data/local/huawei/、/data/local/tmp/路径下分别部署test.txt和test.sh文件。将test.txt、test.sh放入选定手机的/data/local/huawei/、/data/local/tmp/目录下。
   
2. 将文件打包成配置文件tar包并上传到OBS桶。
   调用示例：
   ```
   POST https://${CPH Endpoint}/v1/${project_id}/cloud-phone/phones/batch-storage 
   Header: 
   Content-Type: application/json 
   X-Auth-Token: ${token} 
   Body: 
   { 
       "storage_infos": [{ 
           "phone_id": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", 
           "include_files": [ 
               "/data/local/huawei/test.txt", 
               "/data/local/tmp/test.sh" 
           ], 
           "bucket_name": "${bucket_name}", 
           "object_path": "apk/${package_name}_${version_name}.tar" 
       }] 
   }
   ```
   其中，
   - include_files中的元素为需要打包的文件在云手机中的绝对路径。
   
   - object_path中${package_name}仅支持com.cph.config、com.cph.config.level1、com.cph.config.level2中的一种，${ version_name }用于识别配置包版本，可自行定义。
    
3. 参考[推送应用tar包至服务器共享空间](https://support.huaweicloud.com/bestpractice-cph/cph_bp_0049.html)，将配置文件tar包推送到目标云手机服务器。
   调用示例：
   ```
   POST https://${CPH Endpoint}/v1/${projectId}/cloud-phone/phones/share-apps
   Header: 
   Content-Type: application/json 
   X-Auth-Token: ${token} 
   Body:
   { 
       "package_name": "${package_name}", 
       "bucket_name": "${bucket_name}",  
       "object_path": "apk/${package_name}_${version_name}.tar",
       "pre_install_app": 1, 
       "server_ids": [
           "${server_id1}",
           "${server_id2}"
       ] 
   }
   ```
   推送时需将"pre_install_app"参数设置为1。
   
4. 重置或重启云手机，自动部署配置文件包中的文件到云手机对应位置。
   ![](https://support.huaweicloud.com/bestpractice-cph/public_sys-resources/notice_3.0-zh-cn.png)
   1. 配置文件包部署到云手机会占用云手机存储空间，建议配置文件不要过大。
   
   2. 建议所需文件放置在云手机固定目录，方便文件统一管理。然后将这些文件都打包在com.cph.config包中。
   
   3. 如果当前支持的三个配置文件包均需预置，云手机在重置或重启时，会按照com.cph.config、com.cph.config.level1、com.cph.config.level2的顺序依次部署，如果有相同文件，则会依次覆盖。
     
 
