첫 번째 답변: GNU 방식

첫 번째 답변: GNU 방식

공통 파일이 있는 디렉토리를 한 파티션에서 다른 파티션으로 이동하는 방법은 무엇입니까?

/mnt/X하드 링크를 통해 파일을 공유하는 디렉터리가 있는 파티션을 마운트했다고 가정합니다 . 이러한 디렉토리를 다른 파티션으로 이동하고 /mnt/Y하드 링크를 유지하려면 어떻게 해야 합니까 ?

"하드 링크로 파일을 공유하는 디렉터리"가 무엇을 의미하는지 더 잘 설명하기 위해 다음 예를 참조하세요.

# let's create three of directories and files
mkdir -p a/{b,c,d}/{x,y,z}
touch a/{b,c,d}/{x,y,z}/f{1,2,3,4,5}
# and copy it with hardlinks
cp -r -l a hardlinks_of_a

보다 구체적으로 전체 파일 크기가 10G이고 각 파일에 10개의 하드 링크가 있다고 가정합니다. 문제는 10G를 사용하여 대상으로 이동하는 방법입니다. (100G로 복사한 다음 중복 제거를 실행한다고 말할 수도 있습니다. 이는 제가 묻는 것이 아닙니다.)

답변1

rsync에는 이에 대한 -H또는 --hard-links옵션이 있으며 중지하고 다시 시작할 수 있으며 마지막 실행 중/이후 변경된 모든 파일을 효율적으로 처리하기 위해 다시 실행할 수 있다는 일반적인 rsync 이점이 있습니다.

-H, --hard-links
    This tells rsync to look for hard-linked files in
    the source and link together the corresponding
    files on the destination.  Without  this option,
    hard-linked files in the source are treated as
    though they were separate files. [...]

rsync매뉴얼 페이지를 읽고 -H를 검색하십시오. 특정 경고에 대한 자세한 내용이 있습니다.

답변2

첫 번째 답변: GNU 방식

GNU는 cp -a가능한 한 많은 구조와 메타데이터를 보존하면서 반복적으로 복사합니다. 여기에는 소스 디렉터리의 파일 간의 하드 링크가 포함됩니다. -a다른 모든 기능을 사용 하지 않고 하드링크 저장만 선택합니다 --preserve=links.

mkdir src
cd src
mkdir -p a/{b,c,d}/{x,y,z}
touch a/{b,c,d}/{x,y,z}/f{1,2,3,4,5}
cp -r -l a hardlinks_of_a
cd ..
cp -a src dst

답변3

세 번째 답변: POSIX 방식

POSIX는 아카이브 형식을 표준화했지만 tar유틸리티는 아직 표준화하지 않았습니다 tar. pax단일 프로세스에서 압축 및 압축 풀기 작업을 수행하는 추가 기능이 있는 tar 아카이브를 조작하기 위한 POSIX 유틸리티를 호출합니다 .

mkdir dst
pax -rw src dst

답변4

원천:http://www.cyberciti.biz/faq/linux-unix-apple-osx-bsd-rsync-copy-hard-links/

정확한 사본을 만들기 위해 필요한 것은

rsync -az -H --delete --numeric-ids /path/to/source/ /path/to/dest/

관련 정보