получить контрольную сумму каталога в Голанге - PullRequest
0 голосов
/ 02 мая 2018

Есть ли способ сгенерировать контрольную сумму всего каталога и его содержимого в golang?

Я знаю, как этот пользователь может распаковать каталог и затем получить контрольную сумму этого, но я хотел бы избежать этого, если это возможно.

1 Ответ

0 голосов
/ 02 мая 2018

Проверьте пример Parallel Digestion из https://blog.golang.org/pipelines,, начиная с Переваривание дерева , вероятно, может дать вам некоторые идеи.

Так что вы можете перейти от:

// MD5All reads all the files in the file tree rooted at root and returns a map
// from file path to the MD5 sum of the file's contents.  If the directory walk
// fails or any read operation fails, MD5All returns an error.
func MD5All(root string) (map[string][md5.Size]byte, error) {
    m := make(map[string][md5.Size]byte)
    err := filepath.Walk(root, func(path string, info os.FileInfo, err error) error {
        if err != nil {
            return err
        }
        if !info.Mode().IsRegular() {
            return nil
        }
        data, err := ioutil.ReadFile(path)
        if err != nil {
            return err
        }
        m[path] = md5.Sum(data)
        return nil
    })
    if err != nil {
        return nil, err
    }
    return m, nil
}

К параллельной версии: https://blog.golang.org/pipelines/parallel.go

...