如何仅将丢失的文件从源文件夹移动到目标文件夹

如何仅将丢失的文件从源文件夹移动到目标文件夹

我已经花了很多个小时到处阅读……测试 rsync、Grsync 和 Unison……但没有希望! rsync 在两个本地文件夹之间复制/同步文件的正常方法是“复制整个文件夹本身! - 而不是想象中的内容! - 没有别的!

为了进行实验,我在同一根目录下创建了两个具有不同名称的文件夹。当得到这个结果时,我将它们分开,并为源提供相同的目标名称,以防这是原因。

rsync 在两个本地文件夹之间复制/同步文件的正常方式

rsync -zrahvWnt --delete-after ~/Documents/test3/source-DRV ~/Documents/test3/dest-T

我还使用了 Unison 中所有可能的选项..没有希望!结果一样!

“解决有利于第一个根的冲突”“从右到左传播”“从右到左”

没有一个工作不同!所有结果都相同:将“整个”文件夹复制到另一个文件夹“内部”!

我想要的基本上很简单:

  1. 检查目标中源中是否缺少文件。

  2. 移动 - 更好,但复制也可以

  3. 仅从源文件夹到目标文件夹缺少文件。

  4. 对两个文件夹中大小、日期相同的文件不执行任何操作。

这将产生一个“完整文件夹”(即目标)和一个“无用文件夹”(即源),手动删除没有问题。

使 rsync“最好”移动 - 而不是复制 - 从源到目标唯一缺少的文件和文件夹的所需方法

[编辑:]在实现解决方案时,我发现我使用了 -n 选项,这使得“空运行”..这可能是没有任何效果的另一个原因。我删除了它,一切都按预期进行!

答案1

如果我正确理解你的意图,你所需要做的就是在你的第一个参数后面附加一个斜杠rsync。也就是说,而不是写

rsync -zrahvWt --remove-source-files ~/Documents/test3/source-DRV ~/Documents/test3/dest-T

rsync -zrahvWt --remove-source-files ~/Documents/test3/source-DRV/ ~/Documents/test3/dest-T

编辑 我根据OP关于回答他/她自己的问题的评论修改了上述命令。

关于 的参数rsync

  • -z:在传输过程中压缩文件数据
  • -r:递归:复制当前文件夹下的文件夹及其文件,而不仅仅是当前文件夹下的文件
  • -a:保留几乎所有内容(日期、权限等)
  • -h:以人类可读的格式输出数字
  • -v:详细:在屏幕上打印进程的更多详细信息
  • -W:复制整个文件,不只更新差异数据。

更多详细信息可以通过运行找到man 1 rsync

相关内容