使用 ROBOCOPY 移动数据,而不是复制数据

使用 ROBOCOPY 移动数据,而不是复制数据

我有以下 powershell 脚本,它执行一些 robocopy 命令:

ROBOCOPY.exe $q3 $q4 /R:5 /W:15 /S /NP /MT:32 /XA:SH /XJD
ROBOCOPY.exe $q2 $q3 /R:5 /W:15 /S /NP /MT:32 /XA:SH /XJD
ROBOCOPY.exe $q1 $q2 /R:5 /W:15 /S /NP /MT:32 /XA:SH /XJD
ROBOCOPY.exe $src $q1 /R:5 /W:15 /S /NP /MT:32 /XA:SH /XJD

这很好用,但需要真的很久以来,我一直在想,是否有一种方法可以让 robocopy 执行“剪切 + 粘贴”而不是“复制 + 粘贴”,这样 Windows 就会将 NTFS 指针移动到文件,而不是实际复制每个文件的所有位?

答案1

/MOV选项就是为此而设计的。请检查您的 robocopy 的具体版本(robocopy /? 应该会显示该选项)。

在此处输入图片描述

答案2

Robocopy 仅在使用 /MT(在我的情况下为 32)开关时留下空的源文件夹,如果我不使用 /MT,则所有内容都会移动,在 2008R2 上运行。

答案3

移动或者移動項目

Move-Item -Path $source -Destination $source

我相信移动&命令是 robocopy 不移动指针的原因之一(robocopy 希望具有健壮性和可恢复性)。

在决定使用移动或 robocopy 之前,可能需要检查它是否位于同一台机器上的同一逻辑驱动器上:

$source_root = [System.IO.Path]::GetPathRoot($source)
$dest_root = [System.IO.Path]::GetPathRoot($dest)
if($source_root -like $dest_root){...

相关内容