btrfs로 데이터를 복사하지 않고 파일을 복제하는 방법은 무엇입니까?


14

btrfs에 대한 경험이 없지만 파일을 중복 제거 할 수 있다고 광고되었습니다.

내 응용 프로그램에서 전체 디렉토리 트리를 복제해야합니다.

내가 배운 내용에서 btrfs는 일부 스캔 후에 만 ​​중복되지 않습니다. 사용하는 cp것 조차도 중복 제거를 유발하지 않는 것 같습니다 (적어도 df복사 된 파일 크기에서 디스크 사용량이 증가 함).

데이터 이동을 피하고 btrfs다른 위치에서 파일을 복제하도록 지시 할 수 있습니까? 본질적으로 메타 데이터를 복제하는 것입니까?

본질적으로, 하드 링크와 유사하지만 독립적 인 메타 데이터 (허가, 수정 시간, ...)가 있습니다.


7
cp --reflink=always.
mikeserv

3
이것은 하드 링크와 같은 것이 아닙니다. 의 cp --reflink=always경우 사용자 관점의 결과는 모든면에서 완전히 독립적 인 두 개의 파일입니다. 기본 파일 시스템이 COW (Copy-On-Write)를 통해 구현 세부 사항임을 추상화하고 있습니다. "하드 링크는 아니지만 독립적 인 메타 데이터가 있습니다." 내 지식으로는 btrfs는 아직 자동 중복 제거를 수행하지 않습니다. 나는 그것이 미래의 계획이라고 생각하지만 나는 그것에 긍정적이지 않습니다.
ormaaj

@ormaaj-하드 링크에는 독립적 인 메타 데이터 가 없습니다 . 그리고 Udo는 구현 세부 사항을 요구했다 . 파일에 대한 리퍼 링크를 수행 할 때는 본질적으로 메타 데이터를 복제합니다 . 참조 가 파일이 분기되는 것을 독립적으로 변경 하는 경우에만 해당됩니다. 이것이 바로 중복 제거의 모든 것입니다!
mikeserv

1
@ mikeserv Er, 중복 제거에는 다른 의미가 있다고 확신합니다. 중복 제거는 이미 존재하는 중복 데이터 사본을 가져 와서 통일하고 있습니다. COW는 중복을 최소화하는 수단이며 중복 제거는 아닙니다.
ormaaj

@ ormaaj-나는 그것이 이상한 이야기라고 생각합니다 : 중복 제거는 복제를 최소화하는 것이 아닙니다.
mikeserv

답변:


12

두 가지 옵션이 있습니다.

  1. cp --reflink=always
  2. cp --reflink=auto

두 번째는 거의 항상 첫 번째보다 선호됩니다. 사용 auto은 파일 시스템이 참조 링크를 지원하지 않는 경우 (예 : ext4 또는 NFS 공유에 복사) 실제 복사를 수행하는 것으로 대체됨을 의미합니다. 첫 번째 옵션을 사용하면 완전히 실패하고 복사가 중지됩니다.

이상적이지 않은 조건에 견고해야하는 스크립트의 일부로 이것을 사용하면 auto더 나은 서비스를 제공 할 수 있습니다.


에릭 에스트라다입니까?
mikeserv

2
@mikeserv 롤. 내 이름은 이단입니다. 그래도 재미있을 것입니다. Eric Estrada : 낮에는 배우, 밤에는 sysadmin. 믿거 나 말거나, 이것은 eestrada누군가가 저에게 요구 한 온라인 핸들 을 통해 10 년이 넘는 시간에 처음 입니다.
eestrada

2
에릭 어쨌든 좋은 대답입니다.
mikeserv
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.