Rsync -avzHP는 하드 링크를 하드 링크로 복사하는 대신 하드 링크를 따릅니다.


13

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를 만드는 것입니다. 어떻게 생각해?


당신과 똑같은 일을 해요! +1. dd 접근을 시도 할 것입니다
mmalmeida

답변:


10

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

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

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

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

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


rsnapshot backups 디렉토리 외부에서 하드 링크를 사용하지 않는다고 가정해도 여전히 문제가 발생합니까? 하드 디스크 공간이 부족하지만 rsnapshot 백업을 만들고 싶습니다. 현재 내 디스크가 가득 찼습니다.
Sridhar Sarnobat

나는 당신이 지적한 상황에 부딪힌 것 같아요. rsync로 만든 많은 스냅 샷이있는 백업 디렉토리가 있습니다. 하드 링크가 많은 파일이 많이 있습니다. 총 디스크 사용량은 약 200G입니다. 'rsync -avH'를 사용하여 다른 파티션에 복사하고 있습니다. 그러나 4 박 5 일 후에도 복사 과정이 계속 진행되고 있습니다. 소스 디렉토리의 총 하드 링크 수로 인해 rsync가 완전히 혼동됩니다.
Guangliang

우분투 18.04에서는 --hard-links( 's')입니다.
nobar

1

-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원격 호스트에 대한 후속 테스트 는 여전히 하드 링크를 유지 관리했습니다.


rsnapshot이 심볼릭 링크를 사용하지 않고 하드 링크를 사용한다는 것을 발견 한 후에는 완전히 옳았습니다. 그에 따라 내 질문을 업데이트했습니다. 따라서 솔루션은 -H를 사용하고 rsnapshot으로 작성된 하드 링크 구조를 유지하기 위해 전체 디렉토리를 복사해야하지만 여전히 작동하지 않습니다. 매일 매일 모든 것을 복사하기 시작하면 변경된 파일뿐만 아니라 0이 복사됩니다. // 네, 저는이 작업을 위해 Qnap TS-439와 외부 Lacie Drive를 사용하고 있습니다.
woerndl

테스트 소스 디렉토리와 테스트 대상 디렉토리를 소스에 단 2 개의 파일로 묶어 하드 링크하여이 문제점을 줄일 수 있습니까? 또한 링크가 올바르게 처리되지 않았다고 어떻게 판단합니까? 하드 링크를 사용하는 이유는 무엇입니까? -H맨 페이지에서 긴 텍스트를 읽으면 몇 가지주의 사항이 있음을 알 수 있습니다.
nhed

테스트 사례를 설정하고 계속 업데이트하겠습니다. 지금까지 아이디어를 주셔서 대단히 감사합니다.
woerndl

1

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

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


내 문제에 참여해 주셔서 감사합니다! 삼바와 관련된 것 같습니다. 내 드라이브가 NAS에 직접 연결되어 있습니다.
woerndl

1
안녕하세요,이 문제는 삼바와 관련이 없습니다. 그것은 rsync를 웹 사이트의 홈입니다 : rsync.samba.org
Motsel

0

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

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


의견을 보내 주셔서 감사합니다. 내 질문을 업데이트해야했습니다 .Rsnapshot은 symlink를 사용하지 않고 하드 링크를 사용하여 증분 백업 구조를 구축합니다. 따라서 -l은 어쨌든 도움이되지 않지만 불행히도 작동하지 않는 -H해야합니다.
woerndl
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.