디렉토리 계층 구조를 유지하는 디렉토리에 파일을 하드 링크로 재귀적으로 복사하는 방법은 무엇입니까?

디렉토리 계층 구조를 유지하는 디렉토리에 파일을 하드 링크로 재귀적으로 복사하는 방법은 무엇입니까?

한 디렉터리 계층의 파일을 다른 디렉터리에 하드 링크하려고 합니다. 코드는 다음과 같습니다.

# 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_dirdest_dirdest_dir/src_dirsrc_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

관련 정보