本文介绍通过 tosutil 工具,将 vePFS 上的数据备份至对象存储 TOS 的流程及操作步骤。
保存在 vePFS 的训练的核心数据,对数据安全性要求比较高,需要把数据进行定期备份。
训练过程中的 checkpoint 数据,定期同步到对象存储中,及时释放 vePFS 的存储空间。
ECS 和 TOS 带宽均满足备份需求。
已创建对象存储 Bucket,具体步骤,请参见创建存储桶。
已在 ECS 挂载文件存储 vepfs,具体步骤,请参见挂载 vePFS。
已在 ECS 安装 tosutil 工具并完成初始化,具体步骤,请参见 安装 tosutil 和初始化 tosutil。
登录云服务 ECS。
执行以下命令,创建用于存放备份脚本和备份日志信息的目录。本文以创建 backp
目录为例。
cd /opt mkdir backup
执行以下命令,创建备份脚本,本文以 backup_vepfs_to_tos.sh
为例,并使用文本编辑器打开。
vim backup_vepfs_to_tos.sh
在脚本中添加备份信息。
说明
该备份命令为增量备份,仅备份 vePFS 中新增和修改的文件到对象存储。
#!/bin/bash # 指定要备份的源路径和目标路径,根据实际业务调整 source_path="/mnt/vepfs/backup/files" bucket_name="your-tos-bucket" log_file="/opt/backup/backup.log" #备份参数命令 jobs=32 parallel=4 # 备份命令,记录开始时间和结束时间,同时把tosutil的回显输出到日志文件中 start_time=$(date +%Y-%m-%d_%H:%M:%S) echo "Start vepfs backup to tos: $start_time" >> $log_file tosutil cp -r -u -j $jobs -p $parallel $source_path tos://$bucket_name >> $log_file 2>&1 end_time=$(date +%Y-%m-%d_%H:%M:%S) echo "Finish vepfs backup to tos: $end_time" >> $log_file
备份参数说明如下:
参数 | 是否必须修改 | 说明 |
---|---|---|
source_path | 是 | 需要备份的 vePFS 的文件路径。 |
bucket_name | 是 | 数据备份的对象存储桶名称或者目录。 |
log_file | 是 | 数据备份日志文件。 |
jobs | 否 | tosutil 数据同步的并发任务数量。 |
parallel | 否 | 大文件同步的分片数量。 |
执行以下命令,授予备份脚本执行权限。
chmod +x backup_vepfs_to_tos.sh
执行以下命令,创建并编辑一个 cron 任务。
crontab -e
在 cron 表中添加备份内容,本文以每天凌晨备份一次为例。详细配置命令信息请参见附录。
0 0 * * * /bin/bash /opt/backup_vepfs_to_tos.sh
根据 backup.log
文件,查看备份开始、结束时间以及备份详情信息。
说明
备份详情信息包括:备份耗时时长、备份成功的文件数、备份失败的文件数、已经存在跳过的文件数以及备份文件容量。
cron 格式:* * * * * [your command]
参数说明如下。
位置 | 说明 | 示例 |
---|---|---|
第一列 * | 表示执行分钟,取值范围为 0~59 。 | 5 * * * * :表示每五分钟执行。 |
第二列 * | 表示执行小时,取值范围为 0~23 。 | 0 * * * * :表示每小时执行。 |
第三列 * | 表示执行日期,取值范围为 1~31 。 | 0 0 * * * :表示每天执行。 |
第四列 * | 表示执行月份,取值范围为 1~12 。 | 0 0 1 * * :表示每月执行。 |
第五列 * | 表示执行星期,取值范围为 0~7 ,其中 0 和 7 均表示星期日。 | 0 0 * * 0 :表示每周执行。 |
your command | 表示要执行的命令。 | 0 0 1 1 * :表示每年执行。 |
常见示例如下。
示例 | 说明 |
---|---|
30 8 * * *[your command] | 表示每天早上 8 点 30 分执行命令。 |
15 4 1,11,21 * *[your command] | 表示每月 1、11、21 号早上 4 点 15分 执行命令。 |
10 0 * * 0,3 [your command] | 表示每周日、周三的 00:10 执行命令。 |
0,30 18-21 * * * [your command] | 表示在每天 18:00 至 21:00 之间每隔 30 分钟执行命令。 |