Btrfs는 Copy-On-Write를 지원합니다. 이 기능을 사용하여 디렉토리를 복제하려고했습니다.
cp -R --reflink=always foo_directory foo_directory.mirror
명령이 거의 즉시 완료 될 것으로 예상 btrfs subvolume snapshot
했지만 (예 🙂 cp
느린 표준 복사를 수행하는 것으로 보입니다.
매뉴얼 페이지에 따르면, --reflink=always
Copy-On-Write를 시행 할 것으로 예상 됩니다.
–reflink [= always]가 지정되면 경량 복사를 수행하십시오. 여기서 데이터 블록은 수정시에만 복사됩니다. 이것이 불가능하면 복사에 실패하거나 –reflink = auto를 지정하면 표준 복사본으로 폴백합니다.
질문 :
- 왜
--reflink=always
작동하지 않는지 아십니까 ? - 대신 어떤 옵션 (또는 다른 명령)을 사용해야합니까?
답변
cp --reflink=always
거의 확실하게 작동합니다. 그렇지 않은 경우 오류가 발생합니다. 기본적으로 --reflink=always
와 의 차이점 --reflink=auto
입니다. 오류는 다음과 같습니다.
# Filesystem that does not support the feature at all
cp: failed to clone `xx' from `yy': Inappropriate ioctl for device
# Filesystem that does support it, but copy across filesystems
cp: failed to clone `xx' from `yy': Invalid cross-device link
작은 파일이 많은 디렉토리 구조를 복사하고 있습니까? 이 경우 cp
에도 여전히 모든 디렉토리를 작성하고 모든 파일을 열고 닫아야하므로 다른 시간이 걸립니다 btrfs subvolume snapshot
. 그것은 아마도 작업을 수행하는 데 걸리는 시간을 설명합니다.