Rsync -avzHP는 하드 링크를 하드 링크로 복사하는 대신 하드 링크를 따릅니다. 실제 파일을 복사합니다 . 나는

rsnapshot을 사용하여 “작업”공유의 시간별 / 일별 / 주별 / 월별 백업을 만듭니다. 이제 rsync를 사용하여 전체 백업 디렉토리를 외부 드라이브에 복사하려고합니다.

화면 세션 내 에서이 명령 / 매개 변수를 사용했습니다 (예, rsync-exclude.txt는 명령을 실행 한 디렉토리에 있습니다)

rsync -avzHP --exclude-from 'rsync-exclude.txt' /share/backup/ /share/eSATADisk1/backup/;

모든 것이 QNAP TS-439에서 실행 중이며, 내부 드라이브는 단일 디스크 (RAID 없음) 형식의 EXT4이고 외부 드라이브는 EXT3 형식입니다.

Rsync는 모든 하드 링크를 따르고 외장 드라이브 에서 업데이트 된 하드 링크 를 다시 만드는 대신 실제 파일을 복사합니다 . 나는 이것을 즉시 인식하지 못하여 외장 드라이브가 동일한 파일의 xxx 사본으로 휴지통에 버렸습니다.

내가 달성하고자하는 것은 rsnapshot에 의해 생성 된 전체 파일 구조를 외부 드라이브에 복사하여 하드 링크를 유지하여 공간을 절약하는 것입니다. 참고 : 반드시 rsync를 사용하여 수행해서는 안됩니다.

당신의 아이디어와 시간을 가져 주셔서 감사합니다. 큰 도움을 주셔서 감사합니다.

업데이트 : rsnapshot이 심볼릭 링크를 사용하지 않고 하드 링크를 사용하고 있음을 알았으므로 이제 -H 옵션을 사용하여 Rsnapshot에 따라 하드 링크 구조 를 여러 대상으로 유지 해야하지만 하드 링크 구조를 유지 해야하지만 여전히 작동하지 않습니다. … 내가 여기서 무엇을 놓치고 있습니까?

업데이트 2 : 나는이 주제에 대한 또 다른 의견 / 진술을 발견했습니다 : rsync with –hard-links freezes Steven Monday는 많은 메모리를 흡수하기 때문에 하드 링크를 포함하는 큰 파일 구조를 rsync하지 말 것을 제안합니다. 따라서 더 나은 솔루션은 백업하려는 데이터 구조의 .img를 만드는 것입니다. 어떻게 생각해?



답변

rsync명령의 -H(또는 --hard-links당신의 파일 시스템의 사본을 만들 것을 보존 원래의 하드 링크 구조 🙂 옵션은 이론적으로, 당신은 짧은에,이다, 달성하려고하는 일을 할 것입니다. 다른 비슷한 질문에 대한 답변 에서 언급 했듯이이 옵션은 소스 파일 시스템이 하드 링크 복잡성의 특정 임계 값을 초과하면 실패 할 운명입니다.

해당 임계 값의 정확한 위치는 RAM 및 총 하드 링크 수 (및 기타 여러 항목)에 따라 달라질 수 있지만,이를 정확하게 정의 할 필요는 없습니다. 무엇이 정말 중요한 것은 임계 값이 실제 상황에서 교차하는 모든 너무 쉽다는 점이다, 당신은 당신이 알고하지 않은 날이 당신이 실행하려고하는 것이 올 때까지, 그것을 교차 rsync -aH하거나 cp -a투쟁하는 것이 결국 실패 .

내가 권장하는 것은 : 하드 링크 된 파일 시스템을 파일이 아닌 하나의 단위로 복사하십시오. 즉, 전체 파일 시스템 파티션을 하나의 큰 얼룩으로 복사하십시오. 이 작업을 수행하는 데 사용할 수있는 도구가 많이 있지만 가장 보편적 인 도구는 dd입니다.

재고 펌웨어를 사용하면 QNAP NAS는 dd물론 내장되어 있어야합니다 fdisk. 을 사용 fdisk하여 대상 드라이브에서 최소한 소스 파티션만큼 큰 파티션을 만듭니다. 그런 다음, dd새로 작성된 대상 파티션에서 소스 파티션의 정확한 사본을 작성하는 데 사용 하십시오.

dd복사가 진행 되는 동안 대상에서 손상된 사본이 생기지 않도록 소스 파일 시스템에서 아무것도 변경되지 않도록해야합니다. 이를위한 한 가지 방법 umount은 복사 프로세스를 시작하기 전에 소스에 보내는 것입니다. 다른 방법은 소스를 읽기 전용 모드로 마운트하는 것입니다.


답변

-l 심볼릭 링크를위한 것인데 왜 하드 링크를 위해 무엇을할까요?

(죄송합니다. 이것은 의견이 아니라 답변입니다. 아직 의견이 없습니다.이 답변에는 답변이 필요했습니다)

논평해야 할 또 다른 참고 사항 : 이것은 모두 기본 하드웨어입니까, 아니면 VM, 네트워크 마운트에 있습니까?

편집하다

하드 링크를 사용하는 이유에 대한 내 이전 의견을 무시하십시오 rsnapshot.

먼저 두 개의 로컬 디렉토리 로컬 디스크간에 rsync를 테스트 한 다음 원격 디스크에 대해 rsync를 테스트하는 것이 도움이 될 것입니다. 이 작은 테스트는 -Hwokrs 옵션을 예상대로 보여줍니다 . -i에 대한 옵션을 ls보여줍니다 아이 노드는, 따라서 링크가 별도의 사본을 보존되었음을 보여주는.

$ rsync -avzHP src/ dest
sending incremental file list
created directory dest
./
file111_prime.txt
           9 100%    0.00kB/s    0:00:00 (xfer#1, to-check=0/3)
file111.txt => file111_prime.txt

sent 156 bytes  received 59 bytes  430.00 bytes/sec
total size is 18  speedup is 0.08

$ ls -liR
.:
total 8
414044 drwxrwxr-x. 2 nhed nhed 4096 Feb 25 09:58 dest
414031 drwxrwxr-x. 2 nhed nhed 4096 Feb 25 09:58 src

./dest:
total 8
414046 -rw-rw-r--. 2 nhed nhed 9 Feb 25 09:57 file111_prime.txt
414046 -rw-rw-r--. 2 nhed nhed 9 Feb 25 09:57 file111.txt

./src:
total 8
414032 -rw-rw-r--. 2 nhed nhed 9 Feb 25 09:57 file111_prime.txt
414032 -rw-rw-r--. 2 nhed nhed 9 Feb 25 09:57 file111.txt

rsync -avzHP src/ host:/tmp원격 호스트에 대한 후속 테스트 는 여전히 하드 링크를 유지 관리했습니다.


답변

이것은 긴 샷이지만 다른 해결책을 찾지 못하면 USB 드라이브를 EXT4로 포맷하는 것이 좋습니다. 아마도 이것이 문제 일 수 있습니다 : https://bugzilla.samba.org/show_bug.cgi?id=7670

소스 폴더에 충분한 하드 링크와 작은 대상 볼륨이 있으면 rsync –hard-links를 사용한 복사가 실패 할 수 있습니다. 대상 <…>에서 최대 수의 하드 링크를 모두 사용하여 Rsync가 실패합니다. 실제 문제는 rsync가 아니라 기본 파일 시스템입니다.


답변

-l옵션을 추가해 보셨습니까 ?

나는 그 사람 페이지가 알고 말한다 는에 포함되어 있다고 -a하지만, 맨 페이지가 항상 100 % 정확합니다.


답변