cp -f khác với cp --remove-Destination như thế nào?


7

trong trang man cp, nó liệt kê tùy chọn -f / - force như: nếu một tệp đích hiện tại không thể mở được, hãy xóa nó và thử lại

đối với tùy chọn --remove-Destination, nó nói: xóa từng tệp đích hiện có trước khi thử mở nó (tương phản với --force)

Vì vậy, cái đầu tiên kiểm tra xem nó có thể được mở không, nếu không, nó sẽ xóa đi bằng cách nào, trong khi cái sau chỉ bỏ qua bước đó. Tôi đã kết hợp từng tùy chọn với -i và trong cả hai trường hợp, nó cho biết quyền của các tệp là gì nếu được bảo vệ chống ghi.

Cái sau có vẻ hiệu quả hơn, đặc biệt nếu sao chép đệ quy / ghi đè các thư mục lớn, nhưng tại sao lại duy trì cả hai tùy chọn? Lợi thế của việc kiểm tra một cái gì đó là nó sẽ đi quá nhiều?

Câu trả lời:


8

Có một sự khác biệt giữa hai (nhấn mạnh của tôi):

nếu không thể mở tệp đích hiện tại, hãy xóa tệp đó và thử lại
xóa từng tệp đích hiện tại trước khi thử mở tệp

Trong trường hợp đầu tiên, nếu tệp có thể được mở, cpsẽ cố gắng chỉ thay thế nội dung. cpsẽ không loại bỏ các tập tin không cần thiết. Điều này sẽ giữ quyền và quyền sở hữu của tệp gốc trừ khi bạn chỉ định rằng chúng cũng sẽ được sao chép.

Trường hợp thứ hai rất hữu ích khi không thể đọc được nội dung (chẳng hạn như liên kết tượng trưng ).


5

và: trong trường hợp tệp đích có nhiều liên kết (liên kết cứng), --remove-Destination sẽ không hủy nội dung của các liên kết khác. Thay vào đó, chỉ có liên kết của đích được loại bỏ (bây giờ chúng ta biết, tại sao "remove" được gọi là "unlink" trong các chức năng hệ thống sâu hơn) và một tệp mới có inode mới được tạo.

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.