"du"가 내 "rsync" 백업이 원본 백업과 크기가 다르다고 보고하는 이유는 무엇입니까?

"du"가 내 "rsync" 백업이 원본 백업과 크기가 다르다고 보고하는 이유는 무엇입니까?

다음 옵션을 사용하여 $HOME외부 저장소 드라이브에 디렉터리 백업을 생성하고 있습니다.rsync

--archive --xattrs --hard-links

새로 백업한 후 du일부 백업 디렉터리는 원래 디렉터리와 크기가 다른 것으로 보고됩니다. 예를 들어, 해당 명령 출력의 백업 복사본 du -bs ~/.mozilla/firefox/<profile>/datareporting/archived/2024-01/출력입니다 .31981253194029

그러나 을 추가 하고 출력 파일 크기를 *실행 하고 합산하면 가 제공되며 , 백업 복사본에 해당하는 명령은 동일한 결과를 제공합니다.du -bs ~/.mozilla/firefox/<profile>/datareporting/archived/2024-01/*3165357

그래서 내 질문은 다음과 같습니다.

  • rsync모든 데이터를 백업하지 못 하셨나요 ~/.mozilla? 아니면 제가 잘못 사용하고 있는 걸까요 du?
  • du백업 복사본의 .mozilla/firefox/<profile>/datareporting/archived/2024-01/파일 크기는 원본 파일과 다르지만 디렉터리에 포함된 파일의 크기는 동일한 이유는 무엇입니까 ?
  • 백업을 잘못 사용한 경우 du백업의 크기가 원본 디렉터리와 정확히 동일한지 어떻게 정확하게 확인할 수 있습니까 $HOME?

노트:

  • shopt -s dotglob보고된 크기 차이에 대해 도트파일이 책임을 지지 않도록 설정 했습니다 du.
  • $HOME파일 시스템은 SSD에 있고 백업 드라이브는 HDD입니다.
  • 두 파일 시스템 모두 ext4.
  • 저는 데비안 12를 사용하고 있습니다.

답변1

명확성을 위해 각 질문에 하나씩 답변해 드리겠습니다.

1. rsync가 ~/.mozilla 아래의 모든 데이터를 백업할 수 없습니까? 아니면 du를 잘못 사용하고 있는 걸까요?

제공하신 정보에 따르면 rsync실패한 백업 데이터가 없는 것 같습니다. 실제로 디렉터리에 있는 개별 파일의 크기를 집계하면 원본 파일과 백업 파일 간의 합계가 일치하므로 rsync모든 데이터가 성공적으로 복사되고 있음을 나타냅니다. 전체 디렉토리에 대해 보고된 총 크기와 해당 콘텐츠의 합계에서 볼 수 있는 차이는 파일 시스템이 디렉토리 메타데이터 및 파일 자체에 공간을 할당하는 방식의 차이 du때문일 수 있습니다 . 디렉터리와 파일이 사용하는 공간은 파일 시스템의 블록 크기와 할당을 기준으로 계산됩니다. 이는 특히 동일한 파일 시스템 유형(ext4)을 사용하더라도 서로 다른 드라이브(SSD 및 HDD) 간에 다를 수 있습니다.dursyncdu

2. du looking.mozilla/firefox//datareporting/archived/2024-01/의 백업본은 원본 파일과 크기가 다른데 보고서 디렉터리에 포함된 파일의 크기는 왜 같은가요?

du각 드라이브의 파일 시스템이 디렉터리에 공간을 할당하고 메타데이터를 저장하는 방식으로 인해 디렉터리 자체의 크기가 다르게 보고됩니다. 각 파일 시스템은 디렉터리 메타데이터와 블록 할당을 다르게 처리할 수 있으므로 해당 디렉터리의 파일 크기가 동일하더라도 보고된 디렉터리 크기가 약간 다를 수 있습니다. 이는 파일 시스템의 블록 크기, 디렉터리의 파일 수(디렉터리 크기에 영향을 미치는 메타데이터 저장소로 인해), 파일 시스템별 최적화 또는 메타데이터 처리의 차이점과 같은 요소의 영향을 받을 수 있습니다. 요약할 때 파일 크기가 정확히 일치한다고 언급했으므로 이는 파일 자체가 올바르게 백업되었으며 크기 차이는 디렉터리 메타데이터 또는 파일 시스템 할당 차이에서 비롯된다는 생각을 강화합니다.

3. 실수로 du를 사용한 경우 백업이 원본 $HOME 디렉터리와 정확히 동일한 크기인지 어떻게 정확하게 확인할 수 있습니까?

특히 디렉터리와 같은 중요한 데이터를 처리할 때 백업의 완전성과 완전성을 정확하게 확인하기 위해 $HOME크기 비교를 사용하는 것은 위에서 설명한 이유로 가장 신뢰할 수 있는 방법이 아닐 수 있습니다. du대신 다음 접근 방식을 사용해 보세요.

  • 체크섬 확인: md5sum또는 같은 도구를 사용하여 sha256sum원래 디렉터리와 백업 디렉터리에 있는 파일의 체크섬을 생성한 다음 이러한 체크섬을 비교하여 일치하는지 확인할 수 있습니다. 모든 파일을 재귀적으로 처리하기 위해 find, xargs 및 선택한 체크섬 도구를 조합하여 수행할 수 있습니다.

    # Generate checksums for the original directory
    find /path/to/original -type f -exec sha256sum {} + > original_checksums.txt
    
    # Generate checksums for the backup directory
    find /path/to/backup -type f -exec sha256sum {} + > backup_checksums.txt
    
    # Compare the checksum files
    diff original_checksums.txt backup_checksums.txt
    

    명령에 출력이 표시되지 않으면 diff모든 파일이 완벽하게 일치한다는 의미입니다.

  • 체크섬 모드의 재동기화: rsync-c옵션을 실행하면 크기와 수정 시간 대신 파일 내용(체크섬)을 강제로 비교하게 됩니다. 이는 모든 파일이 올바르게 복사되고 동일함을 확인하는 보다 안정적인 방법이 될 수 있습니다.

이러한 방법은 디스크에 할당된 공간이 아닌 파일의 내용에 중점을 두어 백업 무결성을 보다 정확하게 확인할 수 있습니다.

관련 정보