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")
	}
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM