zoukankan      html  css  js  c++  java
  • Go简易分布式对象存储 合并文件的所有分块为一个文件

    项目

    项目地址: https://github.com/Draymonders/cloud
    欢迎大家Watch or Star

    缘由

    由于项目中对大文件进行5MB为一个分块上传(多线程,提升上传效率),因此所有分块上传完是要求合并的。

    filepath: 分块所在目录,分块按照数字标号来有序存储
    filestore: 生成一个新文件的目录位置

    脚本文件

    #!/bin/bash
    
    filepath=$1
    filestore=$2
    
    echo "filepath: " $filepath
    echo "filestorepath: "  $filestore
    
    if [ ! -f $filestore ]; then
            echo "$filestore not exist"
    else
            rm -f $filestore
    fi
    
    for item in `ls $filepath | sort -n`
    do
            `cat $filepath/${item} >> ${filestore}`
            echo "merge ${filepath/${item}}  to $filestore ok"
    done
    
    echo "file store ok"
    

    Go进行脚本控制

    package main
    
    import (
    	"fmt"
    	"os"
    	"os/exec"
    )
    
    const (
    	// dirPath     = "/data/tmp/"
    	dirPath = "d:\tmp\"
    )
    
    func main() {
    	var cmd *exec.Cmd
    	filepath := dirPath + "/root5d0dd1ec/"
    	filestore := dirPath + "1111111.pdf"
    
    	cmd = exec.Command(dirPath+"mergeAll.sh", filepath, filestore)
    	// cmd.Run()
    	if _, err := cmd.Output(); err != nil {
    		fmt.Println(err)
    		os.Exit(1)
    	} else {
    		fmt.Println(filestore, " has been merge complete")
    	}
    }
    
  • 相关阅读:
    系统角色权限问题
    解析JQuery Ajax
    JavaScriptSerializer序列化时间处理
    Javascript加载talbe(包含分页、数据下载功能)
    代理模式
    工厂模式
    单例模式
    Oracle内置函数
    Oracle大数据SQL语句优化
    Oracle大数据查询优化
  • 原文地址:https://www.cnblogs.com/Draymonder/p/11069676.html
Copyright © 2011-2022 走看看