Btrfs는 쓰기 중 복사를 지원합니다. 이 함수를 사용하여 디렉토리를 복제하려고 합니다.
cp -R --reflink=always foo_directory foo_directory.mirror
명령이 거의 즉시 완료될 것으로 예상했지만(예: btrfs subvolume snapshot
) cp
명령이 느린 표준 복사를 수행하는 것 같습니다.
--reflink=always
매뉴얼 페이지에 따르면 Copy-On-Write를 적용하고 싶습니다 .
지정 되면
--reflink[=always]
데이터 블록이 수정될 때만 복사되는 경량 복사를 수행합니다. 이것이 가능하지 않으면 복제가 실패하거나--reflink=auto
지정된 경우 표준 복사본으로 대체됩니다.
질문:
--reflink=always
왜 작동하지 않는지 아시나요 ?- 어떤 옵션(또는 다른 명령)을 사용해야 합니까?
답변1
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
아마도 그렇게 하는 데 걸리는 시간을 설명할 것입니다.