호출 할 때마다 사용 하지 않는 이유 --sparse=always
가 cp
있습니까?
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
기본값이 아닌가?
아마도 개발자가 최소한의 놀라움의 원칙을 사용하기를 원했거나 POSIX가 다르게 지정했기 때문일까요? (posix에서도 cp입니다. 잊어 버립니다)
—
cat
Sparseness를 확인하면 성능이 저하 될 수 있으며, 스파 스 파일은 심각한 파일 시스템 조각화를 일으킬 수 있으며와 (과)의 데이터 손상 인스턴스가 하나 이상
—
frostschutz
cp --sparse
있습니다.
읽기 / 쓰기 루프를 통해 (주로 스파 스가 아닌) 파일의 데이터를 복사하려면 메모리에 dma의 데이터가 있고 메모리가 없어야합니다. 반면에 항상 암시 된 0의 실행 (또는 블록 수가 파일과 일치하지 않는 경우 auto) size)는 데이터를 CPU 캐시로 드래그하고 훨씬 더 많은 CPU 대역폭과주기를 포함합니다.
—
meuh
@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'
--reflink
내가 모르는 것