Làm thế nào để bạn sao chép một thư mục và nội dung của nó vào một vị trí mới dưới một tên thư mục mới?


53

Tôi mới sử dụng dòng lệnh Linux và đang cố gắng nắm bắt lệnh sao chép vào lúc này.

Bất cứ ai cũng có thể vui lòng cho tôi biết nếu có thể sao chép một thư mục với các thư mục con và các tệp được liên kết của nó sang một thư mục mới với một tên mới, ví dụ như library_backup?

Cảm ơn vì bất kỳ và tất cả sự giúp đỡ trước

Câu trả lời:


71

Bạn sử dụng -r(sao chép đệ quy) và chỉ định tên mới

cp -r /path/to/directory /path/to/location/new-name

thay thế với những con đường thật ... ví dụ để sao chép stufftừ thư mục chính của tôi để một hiện thư mục backupvà đặt tên cho thư mục mới stuff-backup(nếu thư mục này đã tồn tại, lưu ý rằng stuffsẽ được sao chép vào nó, không ghi đè lên nó).

cp -r ~/stuff ~/backup/stuff-backup

~là một phím tắt cho thư mục nhà của bạn /home/$USERhoặc /home/zannatrong trường hợp của tôi. Bạn có thể bỏ qua nó nếu thư mục làm việc hiện tại là thư mục chính của bạn - bạn có thể thấy điều này từ lời nhắc của bạn

zanna@monster:~$
              ^--the ~ here is where I am - home!

Bạn có thể thêm -vcờ dài để cpbáo cáo mỗi bản sao đang được thực hiện ...

$ cp -vr stuff backup/stuff-backup
'stuff/thing1' -> 'backup/stuff-backup/thing1'
'stuff/thing2' -> 'backup/stuff-backup/thing2
...

Xin lỗi Zanna. Tôi sẽ đưa lời khuyên của bạn vào thực tế và xem tôi đi như thế nào. Giống như ý tưởng của cờ verbose. giả sử điều này cũng sẽ hoạt động như một báo cáo trong khi lệnh khác đang được thực hiện .. Chúc mừng.
Edm Ubuntu

@Edmfox xin lỗi vì điều gì? Có, rất nhiều lệnh có một -vhoặc --verbosecờ :)
Zanna

xin lỗi vì "cảm ơn" ban đầu ngắn .... nhấn phím return bị lỗi.
Edmfox

10

Lệnh bạn cần chỉ đơn giản cplà viết tắt của "copy".

Bạn có thể sử dụng nó ví dụ với một trong những cú pháp sau:

cp SOURCEFILE TARGETFILE
cp SOURCEFILE TARGETDIRECTORY

Biến thể đầu tiên cho phép bạn chỉ định tên tệp mới cho tệp đích, trong khi biến thể thứ hai tạo một bản sao có cùng tên trong thư mục đích. Tất nhiên bạn phải thay thế chủ sở hữu địa điểm bằng chữ in hoa bằng các đường dẫn hợp lệ trước tiên.

Tuy nhiên, cptheo mặc định chỉ hoạt động trên các tệp, không phải trên các thư mục. Để làm cho nó sao chép một thư mục hoàn chỉnh với tất cả nội dung của nó theo cách đệ quy, bạn phải thêm -rtùy chọn:

cp -r SOURCEDIRECTORY TARGETDIRECTORY

Bạn có thể tìm hiểu thêm về cplệnh bằng cách gõ man cpvào thiết bị đầu cuối của bạn.


Không quen với phần bình luận này Byte Commander ... tiếp tục quay trở lại để thay đổi dòng nhưng thay vào đó đăng bài. Phác thảo rất rõ ràng trong câu trả lời của bạn. Hãy chờ đợi để sắp xếp các thư mục đó ngay bây giờ vì tôi đã được hướng dẫn tốt về cách sử dụng đúng các công cụ có sẵn. Xuất sắc.
Edm Ubuntu

@Edmfox Trong tương lai, sử dụng SHIFT + ENTER trong khi bình luận để đi xuống một dòng.
TheOdd

@OwenHines Chỉ cần các bình luận loại bỏ bất kỳ ngắt dòng và khoảng trắng bổ sung nào và có chúng trong trình chỉnh sửa sẽ không thay đổi bất cứ điều gì trong kết quả.
Chỉ huy Byte

@ByteCommander ơi đúng rồi, đừng bận tâm. Chà, giờ thì anh biết rồi.
TheOdd

6

Thay thế cho lệnh cp thường hữu ích, bạn có thể sử dụng rsync có thêm lợi ích là sao chép các quyền / dấu thời gian của cấu trúc thư mục gốc:

rsync -av dir/ newdir

-a lưu trữ -v dài dòng

lưu ý dấu gạch chéo sau thư mục nguồn.


5

Tôi thấy dễ dàng hơn để thay đổi thư mục tôi đang sao chép từ đầu tiên. Ví dụ này thay đổi thành một thư mục mà mọi người đã gọi /boot. Bất cứ ai cũng có thể sao chép và dán các lệnh bên dưới vào Terminal của họ.

cd /boot
sudo mkdir /boot_backup
sudo cp -r . /boot_backup
du /boot_backup -h

752K    /boot_backup/extlinux/themes/debian-wheezy
756K    /boot_backup/extlinux/themes
832K    /boot_backup/extlinux
2.5M    /boot_backup/grub/i386-pc
20K     /boot_backup/grub/locale
2.3M    /boot_backup/grub/fonts
7.2M    /boot_backup/grub
565M    /boot_backup

Đối với cplệnh, thư mục hiện tại được xác định ./bootthư mục chúng tôi đã thay đổi. Các -rtùy chọn làm cho nó đệ quy để bao gồm tất cả các thư mục con.

Để đảm bảo nó hoạt động chạy duđể liệt kê tất cả các thư mục con và tổng kích thước tệp trong thư mục mới /boot_backuptrong trường hợp này.

Sau khi hoàn thành hướng dẫn này, sử dụng: sudo rm -r /boot_backupđể xóa thư mục mới và thư mục con của nó.


1
Mặc dù điều này giải thích cách sao chép tất cả các tệp từ thư mục hiện tại của bạn sang một thư mục khác, nhưng nó không trả lời đầy đủ câu hỏi của OP về cách sao chép một thư mục (và nội dung của nó) sang một thư mục tên khác. Có các lệnh ngắn hơn (chẳng hạn như cp -r) sẽ đảm nhiệm việc tạo một thư mục mới và sao chép tất cả các tệp vào đó
BlueCacti

1
Nó giải thích làm thế nào để sao chép và định hướng nội dung của nó - sự khác biệt là trước tiên nó thay đổi thư mục nguồn như một thói quen phòng ngừa. cp -rnhư bạn đề nghị đã có trên dòng lệnh thứ ba. Hướng dẫn dựa trên thực tế mọi người đều có một /bootthư mục và có thể thử điều này trên máy của riêng họ. Nếu tôi đã sử dụng các cp -r /home/GroundZero/Documents /home/GroundZero/Documents_backupđộc giả không thể sao chép và dán vào thiết bị đầu cuối của họ - họ sẽ thay đổi GroundZerotạo ra nhiều công việc hơn và cơ hội xảy ra lỗi. Tôi hy vọng bạn đánh giá cao KISS của câu trả lời này với một hướng dẫn nhúng.
WinEunuuchs2Unix 5/11/2016

1
@GroundZero thực hiện cd ~/Documents/SomeObsucreFolder/2016/Nov/để đặt thư mục hiện tại làm thư mục nguồn sẽ thay đổi dấu nhắc Terminal để đảm bảo nó được viết đúng chính tả và sau đó sử dụng cp -r .làm nguồn giúp loại bỏ việc gõ lại thư mục nguồn. Nó chỉ đơn giản là những gì tôi coi là một thói quen tốt. Ngoài ra, một khi thay đổi thư mục nguồn, việc này rất dễ thực hiện ls FIleName1, ls FileName2v.v. để đảm bảo an toàn cho các tệp bạn muốn sao lưu mà không phải lặp lại tên thư mục nguồn cho lslệnh.
WinEunuuchs2Unix

5

Bạn có thể sử dụng lệnh dưới đây để sao chép thư mục từ nơi này sang thư mục con khác.

cp -Rvp /home/edmuntu/data /home/edmuntu/mydata/

Giải thích về lệnh:

  • -R = sao chép thư mục đệ quy
  • v = giải thích những gì đang được thực hiện
  • p = Nó sẽ giúp bạn giữ quyền và quyền sở hữu của bạn với dấu thời gian

Cảm ơn bạn @Rakesh Chauhan. "Giữ quyền và quyền sở hữu của bạn với dấu thời gian" ??? Wow .... tôi cần đến đó !!!! Một khía cạnh khác của các dòng lệnh sẽ được khám phá. Cảm ơn bạn đã trả lời của bạn.
Edmfox

4

cplà lệnh thực hiện chức năng mà bạn đang tìm kiếm. Nó là viết tắt của bản sao và nó làm điều đó. Lệnh sẽ làm việc cho bạn trong tình huống này là

cp -R source/ destination/

Điều này sẽ sao chép source/thư mục và tất cả các thư mục con của nó vào destination/.

Nếu destination/không tồn tại, nó sẽ được tạo.

Các -Rlá cờ tượng trưng cho đệ quy, mà nói cpđể sao chép tất cả các thư mục con.


Cảm ơn bạn @ Owen Hines. Âm thanh như thế này chắc chắn là mệnh lệnh cho nhiệm vụ của tôi. Người chơi
Edm Ubuntu

1
@Edmfox Vui mừng tôi có thể giúp đỡ, nếu bạn tìm thấy giải pháp cho vấn đề của mình, bạn có thể đánh dấu câu trả lời phù hợp với bạn bằng cách nhấp vào dấu kiểm bên dưới không? Điều này sẽ giúp cảnh báo những người khác xem trang của câu hỏi đang được giải quyết.
TheOdd

1

Bạn thường muốn giữ các quyền của tệp giống nhau khi tạo một bản sao, không phải là một bộ quyền tạo mặc định mới. Điều đó có nghĩa là sử dụng cờ -a cho cp.

cp -a file filenew
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.