あるディレクトリ階層のファイルを別のディレクトリにハードリンクしようとしています。コードは次のとおりです。
# Directories first, works fine, takes sub-second
find src_dir/sub1 src_dir/sub2 -type d -exec bash -c 'cd "$0" && mkdir -p "$@"' dest_dir {} +
# Files next, works fine, takes several seconds
find src_dir/sub1 src_dir/sub2 -type f -exec ln -f {} dest_dir/{} \;
への継続的な呼び出しにより、ハードリンクが非常に遅くなりますln
。機能できるフォームが思い出せず、マニュアルページからハードリンクにコピーする方法に関する多くのcp
情報が見つかりませんrsync
。特定の問題に対してCプログラムを書く傾向があります。
このウサギの牡蠣に飛び込む前に、UNIXや他の評判の良いサードパーティ製ツールを使用してスピードを上げる方法についての提案はありますか?
答え1
牛に似た一種の栄養cp
ファイルコピーの代わりにハードリンクをサポート:
cp -lR src_dir dest_dir
すでに存在する場合は、コピーされているdest_dir
すべてのディレクトリのコピーが作成されます。src_dir
dest_dir
dest_dir/src_dir
src_dir
サブセットのみが必要な場合は、src_dir
サブディレクトリを明示的にコピーできます。
mkdir -p dest_dir/src_dir
cp -lR src_dir/sub1 dest_dir/src_dir/sub1
cp -lR src_dir/sub2 dest_dir/src_dir/sub2