如果任何子文件夹中均不存在文件,则通过网络复制文件

如果任何子文件夹中均不存在文件,则通过网络复制文件

我有两台机器,nearbyMachineremoteMachine

nearbyMachine,正在文件夹中创建文件。

nearbyMachine/
    myFiles/
        file1
        file2
        file3
        ...

remoteMachine我也想拥有这些文件——但要按目录分类:

remoteMachine/
    filesByCategory/
        loveLetters/
            file1
            file2
            ...
        otherLetters/
            file3
            ...
        ...

所以我...

  • 将文件夹中的所有文件复制到remoteMachineInternet 上的临时文件夹中,
  • 运行一个软件,remoteMachine从临时文件夹中删除已存在于 的任何子文件夹中的所有文件filesByCategory
  • 手动将文件排序到 的现有或新的子文件夹中filesByCategory

问题是:随着时间的推移,第一步需要的时间越来越长。几个小时。而且不雅

有什么方法(例如使用 rsync)可以让我仅复制远程计算机上尚不存在的文件吗?或者至少获取我必须复制的文件列表?

据我所知,所有同步程序都只能比较两边的一个目录。

答案1

更快捷的方法是选择性地将 remoteMachine比上次同步更新的文件复制到临时文件夹。然后,您只需将一些文件排序到其文件夹中即可。

一个简单的脚本就可以完成这项工作。您可以使用以下实用程序 寻找 列出所有较新的文件。该newerXY参数可能很有用,以及脚本touch 在复制结束时将使用的参考文件。

-newerXY reference
   Succeeds if timestamp X of the file being considered is newer
   than timestamp Y of the file reference.  The letters X and Y
   can be any of the following letters:

     a   The access time of the file reference
     B   The birth time of the file reference
     c   The inode status change time of reference
     m   The modification time of the file reference
     t   reference is interpreted directly as a time

要使用的参数可能是-newermm

您的脚本可以使用此生成的文件列表作为命令find的参数cp,将其复制到远程服务器,然后您可以在其中将它们排序到各自的文件夹中。

相关内容