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

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

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

# 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

관련 정보