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?
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?
Câu trả lời:
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 -f
cờ 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.
f
cờ. -f if an existing destination file cannot be opened, remove it and try again
-f
cờ 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)
Mặc dù cp -R
câ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ó.
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