한 디렉터리 계층의 파일을 다른 디렉터리에 하드 링크하려고 합니다. 코드는 다음과 같습니다:
# 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