2つのサーバー間のディレクトリ構造を同期し、各フォルダに1つのファイルしかない方法は何ですか?

2つのサーバー間のディレクトリ構造を同期し、各フォルダに1つのファイルしかない方法は何ですか?

フォルダ、サブフォルダ、サブサブフォルダ、サブサブサブフォルダの分岐ツリーで構成される巨大なデータがあります。ターミナルサブフォルダには多数の画像(〜2000枚の画像、ファイルあたり〜5-kib)があり、フォルダを開くのは非常に困難で遅くなります。このイメージは伝統的なイメージではありません。情報を含むヘッダーがあります。このタイトルはすべての画像に共通です。データが古く、パフォーマンスが低下するサーバーにあります。

パフォーマンスを向上させる別のサーバーにツリーをコピーし、各サブフォルダーのファイル(すべてのファイル)を新しいサーバーにコピーしたいと思います。

使った

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

このコマンドは、実際には新しいサーバーに新しい空のツリーを作成します。私の質問は次のとおりです

フォルダごとに1つのファイル/すべてのファイルを同期するようにこのコマンドを変更するにはどうすればよいですか?

私の質問は、フラグで定義された役割にもっと焦点を当てています。各フォルダとサブフォルダのファイルを同期するためfの新しい役割に新しいフラグを追加するにはどうすればよいですか?frsync

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

ファイルを含むすべてのディレクトリの最初のファイルがコピーされます。

関連情報