フォルダ、サブフォルダ、サブサブフォルダ、サブサブサブフォルダの分岐ツリーで構成される巨大なデータがあります。ターミナルサブフォルダには多数の画像(〜2000枚の画像、ファイルあたり〜5-kib)があり、フォルダを開くのは非常に困難で遅くなります。このイメージは伝統的なイメージではありません。情報を含むヘッダーがあります。このタイトルはすべての画像に共通です。データが古く、パフォーマンスが低下するサーバーにあります。
パフォーマンスを向上させる別のサーバーにツリーをコピーし、各サブフォルダーのファイル(すべてのファイル)を新しいサーバーにコピーしたいと思います。
使った
rsync -av -f"+ */" -f"- *" /path/to/src ssh [email protected]:/path/to/dest/
このコマンドは、実際には新しいサーバーに新しい空のツリーを作成します。私の質問は次のとおりです
フォルダごとに1つのファイル/すべてのファイルを同期するようにこのコマンドを変更するにはどうすればよいですか?
私の質問は、フラグで定義された役割にもっと焦点を当てています。各フォルダとサブフォルダのファイルを同期するため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
ファイルを含むすべてのディレクトリの最初のファイルがコピーされます。