ssh를 통해 스파스 파일(/var/log/lastlog)을 cp(로컬 컴퓨터에서)만큼 빠르게 복사할 수 있는 프로그램이 있나요?

ssh를 통해 스파스 파일(/var/log/lastlog)을 cp(로컬 컴퓨터에서)만큼 빠르게 복사할 수 있는 프로그램이 있나요?

rsync내 서버를 통해 IP를 지원 ssh하지만 /var/log/lastlog파일은 1.2G입니다(하드 드라이브에는 24K만 필요합니다). 로컬 컴퓨터에서는 cp즉시(몇 밀리초) 복사할 수 있지만 rsync전체 파일을 읽어야 하므로 몇 시간이 걸립니다. 로컬 PC /var/log에도 서버를 설치해 보았는데 , 로컬 PC에서 파일이 1.2T로 감지되었습니다(그래서 sparse 파일은 감지되지 않는 것 같습니다). SSH를 통해 희소 파일을 감지하고 동일한 방식으로 복사할 수 있는 프로그램이 있습니까 (파일에서 빈 블록을 읽지 않고)?sshfssshfscp

편집: rsync-S/--sparse옵션은 여전히 ​​전체 소스 파일(모든 null 바이트 포함)을 읽으려고 하는데 1.2T 파일의 경우 몇 시간이 걸립니다. 전체 파일을 읽은 후 rsync작은 대상 파일(적절하게 희소 파일)을 생성하지만 문제는 모든 null 바이트가 포함된 소스 파일을 건너뛰지 않고 읽는다는 것입니다. cp파일을 복사하는 데 몇 시간이 아닌 밀리초가 걸립니다 rsync. (Linux에서) 20G 스파스 파일을 생성 truncate -s 20G sparse_file1하고 복사한 다음 rsync -S sparse_file1 sparse_file2(오랜 시간이 소요됨) 복사를 시도해 볼 수 있습니다 cp sparse_file1 sparse_file3(몇 밀리초 소요).

답변1

걱정하지 마세요. 아주 잘하고 있어요 rsync -S.

그 이유는 cp실제로 복제하지 않기 때문에 훨씬 빠르기 때문입니다. 여기에는 여러 가지 이유가 있을 수 있는데, 제가 생각할 수 있는 첫 번째 두 가지는 다음과 같습니다.

  • 시스템은 파일 시스템을 즉시 동기화할 필요가 없다고 결정하고 나중에 백그라운드에서(또는 실행하는 동안 즉시 sync) 복사가 발생합니다. 자세한 내용은 을 참조하세요 man sync.

  • 소/중복 제거와 같은 기능을 갖춘 파일 시스템이 있습니다. 그 효과는 cp내가 "위장된 하드 링크"라고 부르는 것을 생성하는 것입니다. 이 경우 복사본은 물리적으로 만들어지지 않으며 파일의 데이터에 추가 이름(예: 실제 하드 링크)만 부여됩니다. 그러나 (진정한 하드 링크와는 반대로) 소스 파일과 대상 파일이 나중에 다른 변경 사항을 받으면 해당 변경 사항은 물리적으로 다른 위치에 저장되고 파일 시스템은 변경 사항을 올바른 파일에 바인딩합니다. 자세한 내용은 기록 중 복사 및 중복 제거에 대한 문서(예: Wikipedia 페이지)를 확인하세요.

관련 정보