我正在嘗試將一個目錄層次結構中的檔案硬連結到另一個目錄。程式碼如下所示:
# 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