Có bất kỳ nhược điểm nào của `cp --spzzy = always` không?


10

Có bất kỳ lý do để không sử dụng sử dụng --sparse=alwaysvới mọi lời mời đến cp?

info cp nói:

‘--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.

Nó cũng nói:

[...] với bí danh sau, 'cp' sẽ sử dụng lượng không gian tối thiểu được hệ thống tệp hỗ trợ.

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

Tại sao không phải --sparse=alwayslà mặc định?


1
Nó không tương thích với --reflink, ngoài điều đó tôi không biết ...
Stephen Kitt

có lẽ chỉ vì các nhà phát triển muốn sử dụng nguyên tắc ít bất ngờ nhất, hoặc vì POSIX quy định khác? (là cp ngay cả trong posix, tôi quên)
mèo

2
Việc kiểm tra độ thưa thớt có thể gây bất lợi cho hiệu suất, các tệp thưa có thể gây ra sự phân mảnh hệ thống tệp nghiêm trọng và có ít nhất một trường hợp hỏng dữ liệu cp --sparse.
frostschutz

1
Sao chép dữ liệu cho các tệp (chủ yếu là không thưa thớt) thông qua vòng đọc / ghi liên quan đến dma dữ liệu vào và ra khỏi bộ nhớ, trong khi tìm kiếm các số 0 được ngụ ý bởi luôn luôn (hoặc tự động trong đó số khối không khớp với tệp kích thước) sẽ kéo dữ liệu vào bộ đệm cpu và liên quan đến nhiều băng thông và chu kỳ cpu hơn.
meuh

1
@StephenKitt Nó tương thích với --reflink: info cpchứa:with the following alias, ‘cp’ will use the minimum amount of space supported by the file system. alias cp='cp --reflink=auto --sparse=always'
Tom Hale

Câu trả lời:


2

Có một vài lý do tại sao nó không được mặc định, một là khả năng tương thích ngược, hiệu suất và cuối cùng nhưng không kém phần quan trọng, nguyên tắc ít gây bất ngờ nhất.

Tôi hiểu rằng khi bạn kích hoạt tùy chọn này, có một chi phí CPU có thể không nhất thiết phải chấp nhận được, bên cạnh đó, khả năng tương thích ngược cũng là chìa khóa. Các cplệnh làm việc đáng tin cậy mà không có, nó thêm một tiết kiệm không gian nhỏ, nhưng những ngày này, đó thực sự là không đáng kể, trong hầu hết các trường hợp ít nhất ...

Tôi nghĩ rằng những bình luận bạn nhận được cũng nêu bật những lý do khác.

Nguyên tắc ít bất ngờ nhất có nghĩa là bạn không thay đổi điều gì đó một cách bất cần, cpđã tồn tại hàng thập kỷ, thay đổi hành vi mặc định của nó sẽ khiến nhiều cựu chiến binh khó chịu.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.