我找到了与该问题类似的结果,但没有一个能够真正为我的具体情况提供解决方案。
我在备份驱动器上有很多带有特定扩展名 (.tfx) 的预设文件。这些文件分散在特定备份文件夹结构内的不同文件夹路径中。我需要找到一种方法来复制所有这些文件,同时保持其目录结构完好无损,并且我需要能够按日期范围过滤搜索结果,并且仅保留任何文件的最近修改版本。
例如
Source:
BackupDrive/Backup_20201201/folder1/subfolder1/subfolderA/file1.tfx
BackupDrive/Backup_20191101/folder1/subfolder1/subfolderA/file1.tfx
BackupDrive/Backup_20201001/folder2/subfolder2/subfolderA/file2.tfx
BackupDrive/Backup_20200901/folder3/subfolder3/subfolderC/file3.tfx
Destination:
Documents/FromBackup/folder1/subfolder1/subfolderA/file1.tfx
Documents/FromBackup/folder1/subfolder2/subfolderA/file2.tfx
Documents/FromBackup/folder2/subfolder3/subfolderC/file3.tfx
这里的重点是找到并复制仅有的特定文件类型,并且仅在特定日期范围内修改,这样同一相对路径中同一文件的旧版本就会被最新版本覆盖,而无需提示我确认发生这种情况的每种情况(因为会有数百种情况)。
我还需要从目标层次结构中删除日期备份文件夹,以便目标路径中只有一个层次结构,而不是我在不同日期制作的备份的多个副本。
理想的解决方案是使用 Automator 制作一个应用程序,这样我就可以简单地使用 Finder 在特定的备份路径和修改日期范围内找到我想要复制的文件,然后将所有这些结果拖放到应用程序上,然后应用程序会提示我输入我想要复制的文件的父文件夹/目标文件夹,并且它们的文件夹层次结构保持不变。如果任何被复制的文件存在于目标位置并且具有较新的修改日期,则较新的文件不会被覆盖。
我弄清楚了如何在 Windows 10 上使用批处理脚本和 robocopy 来执行此操作,基本上将更改从一个文件夹路径同步到已安装的网络驱动器上的另一个文件夹路径。但我不确定如何在 macOS 上执行此操作。
在此先向能提供帮助的任何人表示感谢!
答案1
建议您使用rsync
:https://linux.die.net/man/1/rsync(或其他可在 Google 上找到的参考资料)
Rsync 功能非常强大,但可能比较复杂。首先从一条非常简单的命令开始(建议将其放入简单的 shell 脚本中,以便于编辑和运行),该命令仅同步 2 个小目录。
然后开始寻找更复杂的选项来满足您的要求,例如--include
或--include-from-file
。我非常有信心,您将能够仅使用 rsync 满足您的全部或大部分要求,但您需要根据现有的大量 rsync 参考资料和您的实验,自己找出所需的选项。
如果您已经完成了大部分工作,但仍遇到无法使用 rsync 实现的特定要求,请发布一个新问题,说明您目前的脚本以及遇到的问题。SE 网站不是为您编写脚本的。