如何在两台服务器之间同步目录结构并且每个文件夹中仅包含一个文件?

如何在两台服务器之间同步目录结构并且每个文件夹中仅包含一个文件?

我有巨大的数据,由文件夹、子文件夹、子子文件夹和子子子文件夹的分支树组成。在终端子文件夹中,我有大量图像(〜2000张图像,每个文件〜5--kib),这使得打开文件夹非常困难和缓慢。这些图像不是传统图像。他们有标题包含信息。该标题在所有图像中都是通用的。该数据位于功能较低的旧服务器上。

我想将树复制到另一台性能更好的服务器,并将每个子文件夹中的一个文件(任何文件)复制到新服务器。

我用了

rsync -av -f"+ */" -f"- *" /path/to/src ssh [email protected]:/path/to/dest/

该命令实际上在新服务器上创建了一棵新的空树。我的问题是:

如何修改此命令以使其同步一个文件/每个文件夹的任何文件?

我的问题更关注由标志定义的角色,f如何为新角色添加新标志f,告诉rsync从每个文件夹和子文件夹同步一个文件?

我无法使用任何包含cp mv或 的解决方案find。在旧服务器上运行这些命令和大量数据将花费很长时间!

答案1

在您之后执行此操作同步命令

find /path/to/src -type d | while read D; do F=$(find ${D} -maxdepth 1 -type f | head -1); test -z ${F} || cp ${F} "/path/to/dest$(echo ${F#path/to/src})"; done

这将从包含任何文件的每个目录中复制第一个文件

相关内容