ext4에서 NTFS-3G로 복사할 때 rsync의 크기가 두 배로 늘어납니다.

ext4에서 NTFS-3G로 복사할 때 rsync의 크기가 두 배로 늘어납니다.

home를 사용하여 내 디렉터리를 외부 SSD 드라이브에 백업 하고 싶습니다 rsync.

저는 아치 리눅스를 사용하고 있습니다. 집에 있는게 ext4(251G)이고, 장착된 SSD는 (512G) NTFS-3G입니다 fuseblk.

정확한 rsync호출은 다음과 같습니다.

rsync -aSh --info=progress2 --delete --exclude=/me/.cache /home/me /run/media/me/Samsung_T5/

결국 실패했고, 이것이 마지막 말이었습니다.

        218.76G  99%   25.08MB/s    2:18:36 (xfr#2093188, ir-chk=1368/2286507)
rsync: write failed on "/run/media/me/Samsung_T5/me/a_file": No space left on device (28)

그래서 rsync약 218G 정도의 데이터가 복사됐다고 하는데 SSD가 꽉 차서 복사를 계속할 수가 없었습니다.

du내 SSD 대상에 얼마나 많은 데이터가 있는지 물으면 rsync466G라고 나옵니다.

$ du -hs /run/media/me/Samsung_T5/me
466G    /run/media/me/Samsung_T5/me

이것은 매우 이상합니다. rsync281G를 복사하려고 했으나 218G를 복사했으나 실제로는 466G가 복사되었기 때문에 실패했습니다.

내가 여기서 무슨 실수를 했나요?

나는 이것을 알고 NTFS있고 ext4다르다. 하지만 내 파일을 2배 이상 더 크게 만들 수 있을 만큼 충분히 다른가요? 내가 실제로 가지고 있는 것보다 더 많은 콘텐츠를 복사하고 있습니까 home?

rsynchome~280G를 SSD에 백업하는 올바른 단계는 무엇입니까 home?

고쳐 쓰다[아래 댓글에 감사드립니다]:

내 소스 디렉터리에 많은 수의 작은 파일과 일정량의 스파스 파일이 있습니다. 예를 들어 소스에 4K 파일이 있고 대상에 128K 파일이 있습니다. 소스에는 12K, 대상에는 128K의 스파스 파일도 있습니다.

또한 다양한 실행 파일(예: 공유 라이브러리)에 대한 244개의 하드 링크가 있습니다. 이러한 하드 링크 중 일부는 상대적으로 큰 파일을 가리킵니다. 예를 들어 binutils링커( ld)의 한 버전은 약 7M이고 이에 대한 하드 링크가 4개 있습니다.

답변1

너는 좀 볼 수도 있겠지이중성및 그래픽 사용자 인터페이스데자뷰. 증분 백업을 위해 tar 파일을 사용하며, 파일을 암호화하고 선택적으로 원격 서버에 백업하는 옵션도 있습니다.

librsync와 롤링 체크섬 알고리즘을 사용하여 각 증분 아카이브는 파일의 변경된 부분만 저장합니다.

홈 페이지에는 Unix 권한, 심볼릭 링크, fifo 및 장치 파일을 처리한다고 나와 있지만하드 링크를 보존하지 마십시오. 하드 링크된 대용량 파일이 많은 경우 이는 아카이브에서 가장 좋은 옵션이 아닐 수 있지만 더 중요한 것은 필요한 경우 링크를 다시 넣을 수 있도록 어떤 파일이 서로 링크되어 있는지 개별적으로 기록해 둘 수도 있다는 것입니다. 복원합니다. 가능하다면 심볼릭 링크로 변환하면 이 문제가 해결될 수도 있습니다.


다음과 같은 하드 링크를 찾을 수 있습니다.

find /home/me -links +1 -type f -printf '%n %i %D %p\n' | sort -n 

형식 문자열은 %n링크 번호, %iinode 번호 %D,장비파일이 열려 있습니다 %p. 경로 이름. 동일한 inode 번호와 장치를 가진 라인은 하드 링크입니다. 이 장치는 디렉토리 트리에 마운트 지점이 있는 경우에만 유용합니다(다른 장치의 동일한 inode는 동일한 파일이 아니기 때문입니다). 물론 트리 외부의 파일에 대한 하드 링크는 rsync를 통해서도 처리할 수 없습니다.

답변2

ext4파일 시스템의 디렉토리 트리 백업

백업을 기록할 NTFS 파일 시스템의 경우 시스템을 압축 파일로 백업하는 것이 더 나을 수 있습니다.tar파일을 보관합니다. 이렇게 하면 소유권과 권한이 저장되고 Linux 파일 시스템으로 추출할 때 복원될 수 있습니다. 그리고 작고 희박한 파일은 너무 많은 공간을 차지해서는 안 됩니다.

그래도 사용하려면 rsyncLinux 파일 시스템에 복사하는 것이 좋습니다 ext4. .

사실은 나도 하나 갖고 싶어증가내 집의 백업. rsync는 변경된 파일만 동기화하므로 tarball을 점진적으로 빌드하는 기술이 있습니까?

예, tar를 사용한 증분 백업 도구가 있습니다.

meuh의 답변에서 언급했듯이 이와 같은 도구를 사용하는 것이 가장 쉽지만 기본 사항도 볼 수 있습니다.이 링크, 증분 백업을 위한 주요 추가 옵션은 다음과 같습니다.

--listed-incremental=snapshot-file

관련 정보