AzCopy 忽略或重新创建校验和
AzCopy Ignoring or recreating Checksum
我正在使用 Azure 工具 AzCopy 从 table 存储导出数据,修改导出的数据,然后将数据导入另一个 table 存储 table。我正在使用以下命令导出:
AzCopy /Source:https://MYSERVER/MYTABLE/ /SourceKey:SOURCEKEY /Dest:C:\migration /Manifest:MYTABLE
由于您无法为导出添加过滤器,我正在过滤数据 post-export,根据需要从 JSON 中删除数据。然后我使用以下命令将此数据导入另一台服务器:
AzCopy/Source:C:\export /Dest:https://MYOTHERSERVER/MYTABLE /DestType:Table /DestKey:DESTKEY /Manifest:MYTABLE EntityOperation:InsertOrReplace
当我不操作 JSON 文件时,这些操作工作正常。但是,当我这样做时,文件的内容当然会发生变化,并且清单文件中的校验和不再匹配。当我去执行导入时,我收到一条 "file is corrupt" 消息。
清单文件如下所示:
"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();
}
这个returns4500814390503865422
.
AzCopy 目前不支持在 table 导入期间跳过校验和验证。顺便说一句,清单文件中记录的校验和实际上是 CRC 而不是 MD5,它是通过汇总所有导出文件而不是单个清单文件的 CRC 来计算的。
我正在使用 Azure 工具 AzCopy 从 table 存储导出数据,修改导出的数据,然后将数据导入另一个 table 存储 table。我正在使用以下命令导出:
AzCopy /Source:https://MYSERVER/MYTABLE/ /SourceKey:SOURCEKEY /Dest:C:\migration /Manifest:MYTABLE
由于您无法为导出添加过滤器,我正在过滤数据 post-export,根据需要从 JSON 中删除数据。然后我使用以下命令将此数据导入另一台服务器:
AzCopy/Source:C:\export /Dest:https://MYOTHERSERVER/MYTABLE /DestType:Table /DestKey:DESTKEY /Manifest:MYTABLE EntityOperation:InsertOrReplace
当我不操作 JSON 文件时,这些操作工作正常。但是,当我这样做时,文件的内容当然会发生变化,并且清单文件中的校验和不再匹配。当我去执行导入时,我收到一条 "file is corrupt" 消息。
清单文件如下所示:
"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();
}
这个returns4500814390503865422
.
AzCopy 目前不支持在 table 导入期间跳过校验和验证。顺便说一句,清单文件中记录的校验和实际上是 CRC 而不是 MD5,它是通过汇总所有导出文件而不是单个清单文件的 CRC 来计算的。