Sao chép một thư mục trên Unix


78

Làm cách nào tôi có thể sao chép cấu trúc thư mục, dir1, sang dir2, (với tất cả các thư mục con) trên Unix bằng cửa sổ terminal?


2
"cp -r / dir1 / dir2" Có đúng không ??
Dinesh Kumar

Vâng, đó là chính xác. Bạn có thể muốn đánh dấu một trong những câu trả lời là giải pháp của bạn.
qroberts

Câu trả lời:


115
cp -rf /source/path/ /destination/path/

-r = đệ quy, sao chép tất cả các thư mục con

-f = lực lượng, 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

Lưu ý Bạn nên cẩn thận khi sử dụng -fcờ vì nó sẽ ghi đè lên bất cứ thứ gì bạn sao chép vào. Cảm ơn @Nifle về đề xuất này.

Bạn có thể muốn sử dụng ký tự đại diện * để sao chép tất cả các tệp trong thư mục nếu bạn cần.


11
Tôi không đồng ý rằng bạn nên sử dụng fcờ. -f if an existing destination file cannot be opened, remove it and try again
Nifle

Cá nhân tôi luôn sử dụng cờ -f. Không phải là một thực hành tốt nên có lẽ bạn đúng.
qroberts

Nếu bạn biết những gì nó làm, và bạn biết những gì bạn đang làm nó là OK. Nhưng trong trường hợp này với một người dùng thiếu kinh nghiệm thì nó có thể không phù hợp.
Nifle

@Nifle Vâng, tôi hiểu những gì bạn đang nói. Chỉ là nếu anh ta ép buộc nó, cơ hội để nó hoạt động tốt hơn nếu anh ta không làm thế. Tất cả phụ thuộc vào những gì bạn đang làm và bạn hiểu những gì nó làm.
qroberts

Nếu bạn đặt một ghi chú trong câu trả lời của bạn về việc -fcờ có ích nếu bạn đang sao chép <source> trên <Dest> (như ghi đè lên mọi thứ trong <Dest>) tôi sẽ tự nâng cấp nó và xóa câu trả lời của tôi)
Nifle

11

Mặc dù cp -Rcâu trả lời là đúng (BTW trường hợp cờ trên BSD phải là vốn, cả hai đều được hỗ trợ trên linux), có một câu thần chú cũ liên quan đến tar :

$ tar cf - . | (cd DIR; tar xf - )

Tại sao bạn lại làm thế? Bởi vì tar có một sự hiểu biết khá tinh vi về các liên kết cả cứng và tượng trưng.

Bạn có muốn bạn sao chép để thay thế các liên kết tượng trưng hiện có bằng một liên kết có cùng văn bản không? Hoặc với các liên kết đến cùng một mục tiêu (điều chỉnh các đường dẫn tương đối để bù)? Hoặc với các bản sao bitwise của mục tiêu?

Nếu hai tệp trong bản gốc được liên kết cứng thì cấu trúc mới có hai bản sao của dữ liệu hay chỉ một?

Quyết định, quyết định. Tar có mặc định hợp lý, nhưng cho phép bạn rất cụ thể về nó.


9

tôi thích

cp -axv source dest

Rsync là một công cụ tốt khác cho việc này

rsync -va source dest
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.