我试图找到最安全的方法在两个驱动器之间移动数据,旨在处理最糟糕的情况。例如:如果您试图移动您孩子出生的图片的唯一现有副本,而疯狂的猴子在大厅漫游,可能随时拉动您的Mac和/或外部驱动器上的电源线。
请注意,有一个类似的同步问题,但我特别要求移动哪个是另一个问题,因为(除其他原因外)你必须能够分辨哪些文件已被移动,哪些文件没有被移动。您还需要考虑某些文件可能已复制到预期目标但未从源中删除的可能性。
该解决方案不必使用GUI。事实上,我发现终端安慰。我不介意安装新程序(特别是如果可用的话brew)。唯一要求是该解决方案与Mac OS X 10.8兼容。
以下是我想到的工作流程解决方案:
cp(复制)文件(如果需要)- 校验和文件(复制后或者如果找到文件的现有副本)
- 将文件
rm移动到新位置后,将原始文件移动到废纸篓(不是!)
进一步来说:
用户指定文件应移动到的位置(目标/目标文件夹)。称之为
$DEST(这与--target-directoryGNU 的标志类似mv用户指定应移动到的文件/文件夹
$DEST。打电话给那$INPUT然后脚本将寻求从每个文件/文件夹
$INPUT上$DEST。如果找到文件/文件夹,
$DEST则将校验和$INPUT复制。如果校验和匹配,请将
$INPUT副本移至废纸篓。如果校验和不匹配,请替换
$DESTcopy$INPUT
注意:虽然我关心权限(技术上我关心“可执行性”),但我并不关心“所有权”,因为我是本地系统的唯一用户。
在我去重新发明轮子之前,这样的事情是否已经存在?
基本上我希望尽可能保证在删除原始文件之前已经制作好的副本,而不是在两个驱动器之间进行完全同步。