【问题标题】:AzCopy Ignoring or recreating ChecksumAzCopy 忽略或重新创建校验和
【发布时间】:2017-08-28 09:28:32
【问题描述】:

我正在使用 Azure 工具 AzCopy 从表存储中导出数据,修改导出的数据,然后将数据导入到另一个表存储表中。我正在使用以下命令导出:

AzCopy /Source:https://MYSERVER/MYTABLE/ /SourceKey:SOURCEKEY /Dest:C:\migration /Manifest:MYTABLE

由于您无法为导出添加过滤器,因此我将在导出后过滤数据,并根据需要从 JSON 中删除数据。然后我使用以下命令将此数据导入另一台服务器:

AzCopy/Source:C:\export /Dest:https://MYOTHERSERVER/MYTABLE /DestType:Table /DestKey:DESTKEY /Manifest:MYTABLE EntityOperation:InsertOrReplace

当我不操作 JSON 文件时,这些操作可以正常工作。但是,当我这样做时,文件的内容当然会发生变化,并且清单文件中的校验和不再匹配。当我进行导入时,我收到“文件已损坏”消息。

清单文件如下所示:

"Version":2,"PayloadFormat":"Json","Checksum":5500917691400439101,"AccountName":"SERVER","TableName":"MYTABLE","Timestamp":"2017-08-25T14:10:53.7489755Z","SplitSize":0,"TotalDataFiles":1}

如何让 AzCopy 不验证校验和或替换校验和?

我已尝试使用以下代码重新创建校验和,但是当我在原始 JSON 上执行时,它不匹配:

var md5Hash = getFileHash(file);
var checksum = convertHash(md5Hash);

private byte[] getFileHash(string filePath)
{
    using (var md5 = MD5.Create())
    {
        using (var stream = File.OpenRead(filePath))
        {
            return md5.ComputeHash(stream);
        }
    }
}

private string convertHash(byte[] data)
{
    var algorithm = MD5.Create();
    var result = BitConverter.ToUInt64(data,0);
    return result.ToString();
}

这将返回4500814390503865422

【问题讨论】:

    标签: c# json azure md5 azcopy


    【解决方案1】:

    AzCopy 目前不支持在表导入期间跳过校验和验证。 BTW,清单文件中记录的校验和实际上是CRC而不是MD5,它是通过汇总所有导出文件的CRC而不是单个清单文件来计算的。

    【讨论】:

    • 鉴于校验和是这样创建的,是否可以重新创建?
    • 很抱歉,目前没有一个简单的方法可以做到这一点。
    • 但是如果您只有一个导出的数据文件(根据您共享的清单文件内容,这正是您的情况),新的 Crc64 校验和可以通过一些哈希工具轻松计算(例如 DP Hash @987654321 @)。之后,您可以将数据文件名和清单文件内容替换为新的 Crc64 校验和。
    • 请注意“5500917691400439101”只是十六进制值“4C572F7EC695C53D”的十进制表示。很抱歉造成混乱。
    • jacksum 工具的 crc64 参数,使用 CRC-64-ECMA-182 多项式,(也是 Rocksoft (tm) 模型的参数)jacksum.bat -a crc:64,42F0E1EBA9EA3693,FFFFFFFFFFFFFFFF,false ,false,FFFFFFFFFFFFFFFF -X .\files
    猜你喜欢
    • 2021-11-09
    • 2016-03-20
    • 2017-07-17
    • 2017-07-01
    • 2018-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多