You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PowerShell中使用tar和tee实现一次读取多次写入的原始文件复制

PowerShell原生实现二进制流单次读取多次写入方案

方案1:.NET Stream 直接处理(兼容所有Win10自带PowerShell 5.1版本,二进制完全安全)

该方案完全绕开PowerShell默认管道的文本编码逻辑,不会篡改原始二进制数据,性能接近系统底层IO速度,适配大体积视频文件的无人值守拷贝场景:

# 配置参数
$sourcePath = "相机挂载路径\源视频文件路径"
# 按实际存储卡挂载路径填写目标路径,支持任意数量
$targetPaths = @(
    "E:\存储卡1\目标文件名.mp4",
    "F:\存储卡2\目标文件名.mp4",
    "G:\存储卡3\目标文件名.mp4"
)
$bufferSize = 4MB # 大文件场景可调整为8-16MB提升读写效率

# 打开源文件只读流
$sourceStream = [System.IO.File]::OpenRead($sourcePath)
# 批量初始化所有目标写入流
$targetStreams = $targetPaths | ForEach-Object { [System.IO.File]::OpenWrite($_) }

try {
    $buffer = New-Object byte[] $bufferSize
    $bytesRead = 0
    # 单次读取源流,同步写入所有目标流
    while (($bytesRead = $sourceStream.Read($buffer, 0, $buffer.Length)) -gt 0) {
        foreach ($stream in $targetStreams) {
            $stream.Write($buffer, 0, $bytesRead)
        }
    }
    # 强制刷入所有缓冲区数据到磁盘,避免缓存导致的文件不完整
    foreach ($stream in $targetStreams) {
        $stream.Flush()
    }
} finally {
    # 释放所有IO资源
    $sourceStream.Dispose()
    foreach ($stream in $targetStreams) {
        $stream.Dispose()
    }
}

# 可选:自动完成所有文件哈希校验,无人值守也可确认拷贝正确性
$sourceHash = (Get-FileHash -Path $sourcePath -Algorithm MD5).Hash
foreach ($path in $targetPaths) {
    $targetHash = (Get-FileHash -Path $path -Algorithm MD5).Hash
    if ($sourceHash -ne $targetHash) {
        Write-Error "拷贝异常:$path 哈希校验不匹配"
        # 可自定义告警逻辑,如写入日志、弹出系统提示等
    }
}

方案2:PowerShell 7+ 原生简化写法

若可升级到PowerShell 7.1及以上版本,系统为Get-Content、Tee-Object新增了-AsByteStream参数,管道传输时不会篡改二进制数据,写法更简洁:

Get-Content -Path "源文件路径" -AsByteStream -Raw |
    Tee-Object -Path "目标1路径" -AsByteStream |
    Tee-Object -Path "目标2路径" -AsByteStream |
    Out-Null

方案3:Win10 1809+ 原生GNU工具兼容写法

Win10 1809及以上版本自带GNU tar,搭配WSL或Git for Windows自带的tee.exe可直接复用Unix端的命令逻辑:

tar -cf - -C "源文件目录" . | tee >(tar -xf - -C "E:\存储卡1目录") >(tar -xf - -C "F:\存储卡2目录") > $null

内容的提问来源于stack exchange,提问作者mist42nz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 00:45:04