我正在尝试将一个目录层次结构中的文件硬链接到另一个目录。代码如下所示:
# 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
GNUcp
支持硬链接而不是复制文件:
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