Tôi đang tìm kiếm sự khác biệt giữa cp -r
và cp -a
. "Đệ quy" có nghĩa là gì trong việc sao chép các tập tin từ một thư mục?
Tôi đang tìm kiếm sự khác biệt giữa cp -r
và cp -a
. "Đệ quy" có nghĩa là gì trong việc sao chép các tập tin từ một thư mục?
Câu trả lời:
Đệ quy có nghĩa là cp
sao chép nội dung của các thư mục và nếu một thư mục có các thư mục con thì chúng cũng được sao chép (đệ quy). Nếu không -R
, cp
lệnh bỏ qua các thư mục. -r
là giống hệt với -R
trên Linux, nó khác với một số trường hợp cạnh trên một số biến thể unix khác.
Theo mặc định, cp
tạo ra một tập tin mới trong đó có nội dung tương tự như các tập tin cũ, và các điều khoản tương tự, nhưng bị hạn chế bởi umask ; bản sao được ghi ngày từ thời điểm sao chép và thuộc về người dùng thực hiện bản sao. Với -p
tùy chọn, bản sao có cùng thời gian sửa đổi, cùng thời gian truy cập và quyền tương tự như bản gốc. Nó cũng có cùng chủ sở hữu và nhóm như bản gốc, nếu người dùng thực hiện sao chép có quyền tạo các tệp đó.
Các -a
tùy chọn có nghĩa -R
và -p
, cộng với một vài tùy chọn bảo quản khác. Nó cố gắng tạo một bản sao gần với bản gốc nhất có thể: cùng một cây thư mục, cùng loại tệp, cùng nội dung, cùng siêu dữ liệu (thời gian, quyền, thuộc tính mở rộng, v.v.).
-r
bởi vì -a
(đối với a
rchive) luôn an toàn nhất và có lẽ là những gì bạn mong đợi sẽ xảy ra.
-r
là vì bạn đang sử dụng một số biến thể unix khác với Linux không có -a
và nói chung là bạn sẽ sử dụng cp -rp
. Hoặc rsync -a
.
Tùy chọn -r hoặc -R cho "đệ quy" có nghĩa là nó sẽ sao chép tất cả các tệp bao gồm các tệp bên trong các thư mục con.
Tùy chọn -a như được liệt kê giống như -dR, có nghĩa là nó sẽ bảo toàn các liên kết cũng như sao chép nội dung của các thư mục con. Điều đó có nghĩa là gì khi giữ liên kết là nó sẽ không theo liên kết vì nó được sao chép đệ quy.