`cp --sparse = always`의 단점이 있습니까?


10

호출 할 때마다 사용 하지 않는 이유 --sparse=alwayscp있습니까?

info cp 말한다 :

‘--sparse=WHEN’
     A “sparse file” contains “holes”—a sequence of zero bytes that does
     not occupy any physical disk blocks; the ‘read’ system call reads
     these as zeros.  This can both save considerable disk space and
     increase speed, since many binary files contain lots of consecutive
     zero bytes.  By default, ‘cp’ detects holes in input source files
     via a crude heuristic and makes the corresponding output file
     sparse as well.  Only regular files may be sparse.

    The WHEN value can be one of the following:

...

    ‘always’
          For each sufficiently long sequence of zero bytes in the input
          file, attempt to create a corresponding hole in the output
          file, even if the input file does not appear to be sparse.
          This is useful when the input file resides on a file system
          that does not support sparse files (for example, ‘efs’ file
          systems in SGI IRIX 5.3 and earlier), but the output file is
          on a type of file system that does support them.  Holes may be
          created only in regular files, so if the destination file is
          of some other type, ‘cp’ does not even try to make it sparse.

또한 말합니다 :

[...] 다음 별명으로 'cp'는 파일 시스템이 지원하는 최소 공간을 사용합니다.

alias cp='cp --reflink=auto --sparse=always'

--sparse=always기본값이 아닌가?


1
--reflink내가 모르는 것
Stephen Kitt

아마도 개발자가 최소한의 놀라움의 원칙을 사용하기를 원했거나 POSIX가 다르게 지정했기 때문일까요? (posix에서도 cp입니다. 잊어 버립니다)
cat

2
Sparseness를 확인하면 성능이 저하 될 수 있으며, 스파 스 파일은 심각한 파일 시스템 조각화를 일으킬 수 있으며와 (과)의 데이터 손상 인스턴스가 하나 이상 cp --sparse있습니다.
frostschutz

1
읽기 / 쓰기 루프를 통해 (주로 스파 스가 아닌) 파일의 데이터를 복사하려면 메모리에 dma의 데이터가 있고 메모리가 없어야합니다. 반면에 항상 암시 된 0의 실행 (또는 블록 수가 파일과 일치하지 않는 경우 auto) size)는 데이터를 CPU 캐시로 드래그하고 훨씬 더 많은 CPU 대역폭과주기를 포함합니다.
meuh

1
@StephenKitt 그것은 이다 --reflink와 호환 : info cp포함 :with the following alias, ‘cp’ will use the minimum amount of space supported by the file system. alias cp='cp --reflink=auto --sparse=always'
톰 헤일

답변:


2

이것이 기본값이 아닌 몇 가지 이유가 있습니다. 하나는 이전 버전과의 호환성, 성능 및 마지막이지만 가장 놀랍지 않은 원리입니다.

이 옵션을 사용하면 CPU 오버 헤드가 생길 수 있으며, 이전 버전과의 호환성도 중요합니다. 이 cp명령은 공간을 절약하면서도 안정적으로 작동하지만 요즘은 거의 무시할 수 있습니다.

당신이받은 의견들도 다른 이유들을 강조했다고 생각합니다.

최소한의 놀라움의 원칙은 당신이 불필요하게 무언가를 바꾸지 않고 cp수십 년 동안 주변에 있었으며 기본 행동을 바꾸는 것은 많은 재향 군인을 화나게 한다는 것을 의미합니다 .

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