如何將檔案作為硬連結遞歸複製到保留目錄層次結構的目錄中?

如何將檔案作為硬連結遞歸複製到保留目錄層次結構的目錄中?

我正在嘗試將一個目錄層次結構中的檔案硬連結到另一個目錄。程式碼如下所示:

# 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

相關內容