Lệnh cp Linux: Hướng dẫn sao chép file, thư mục
Lệnh cp là công cụ cơ bản trong Linux dùng để sao chép file và thư mục ngay trên dòng lệnh. Đây là thao tác xuất hiện rất thường xuyên khi quản trị hệ thống, làm việc với VPS, máy chủ hoặc đơn giản là quản lý dữ liệu hằng ngày. Nếu bạn đang cần hiểu rõ cú pháp, cách dùng thực tế và những tùy chọn quan trọng của lệnh cp Linux, bài viết dưới đây sẽ giúp bạn nắm nhanh và áp dụng chính xác.
Lệnh cp trong Linux là gì?
cp là tiện ích dòng lệnh có sẵn trên hầu hết các hệ điều hành Linux và Unix, dùng để sao chép file hoặc thư mục từ vị trí nguồn sang vị trí đích. Công cụ này hỗ trợ nhiều tùy chọn giúp kiểm soát việc ghi đè, giữ nguyên thuộc tính file, hiển thị chi tiết quá trình sao chép và sao chép đệ quy thư mục con.
Cú pháp tổng quát của lệnh như sau:
cp [tùy_chọn] nguồn... đíchTrong đó:
- nguồn: có thể là một hoặc nhiều file, thư mục.
- đích: có thể là file hoặc thư mục, tùy theo cách truyền đối số.
Khi sử dụng lệnh cp, bạn cần có:
- Quyền đọc với file hoặc thư mục nguồn.
- Quyền ghi trên thư mục đích.
Nếu thiếu quyền phù hợp, hệ thống sẽ báo lỗi liên quan đến quyền truy cập.
Nguyên tắc hoạt động của lệnh cp
Trước khi đi vào ví dụ, cần hiểu cách cp Linux xử lý từng trường hợp:
- Nếu nguồn là một file và đích là một file, nội dung của file nguồn sẽ được sao chép sang file đích.
- Nếu file đích chưa tồn tại, hệ thống sẽ tạo file mới.
- Nếu có nhiều nguồn, đích bắt buộc phải là một thư mục.
- Nếu nguồn và đích đều là thư mục, cần dùng tùy chọn sao chép đệ quy như -R hoặc -r.
Mặc định, nếu file đích đã tồn tại, cp có thể ghi đè lên file đó. Vì vậy, khi thao tác với dữ liệu quan trọng, bạn nên dùng thêm các tùy chọn kiểm soát phù hợp.
Cách sao chép file bằng lệnh cp
Sao chép một file trong cùng thư mục
Đây là tình huống phổ biến nhất khi dùng lệnh cp Linux. Ví dụ, để tạo một bản sao của file file.txt với tên mới file_backup.txt:
cp file.txt file_backup.txtMột cách viết ngắn gọn khác là:
cp file{,_backup}Sau khi thực thi, bạn sẽ có thêm một file mới với nội dung giống hệt file gốc.
Sao chép file sang thư mục khác
Để chép file sang một thư mục khác, bạn chỉ cần chỉ định đường dẫn đích. Ví dụ:
cp file.txt /backupTrong trường hợp này, file sẽ được sao chép vào thư mục /backup và giữ nguyên tên ban đầu.
Sao chép file và đổi tên tại đích
Nếu muốn lưu file tại thư mục khác nhưng với tên mới, hãy chỉ định đầy đủ tên file đích:
cp file.txt /backup/new_file.txtĐây là cách hữu ích khi bạn cần tạo bản sao phục vụ backup, kiểm thử hoặc lưu nhiều phiên bản khác nhau của cùng một dữ liệu.
Không ghi đè file đã tồn tại
Mặc định, cp có thể ghi đè file đích nếu tên trùng nhau. Để tránh điều này, sử dụng tùy chọn -n:
cp -n file.txt file_backup.txtTùy chọn này đặc biệt hữu ích khi bạn muốn bảo vệ dữ liệu cũ và tránh ghi đè ngoài ý muốn.
Yêu cầu xác nhận trước khi ghi đè
Nếu bạn muốn hệ thống hỏi lại trước khi thay thế file đích, dùng tùy chọn -i:
cp -i file.txt file_backup.txtĐây là lựa chọn an toàn khi thao tác thủ công trên các file quan trọng.
Chỉ sao chép khi file nguồn mới hơn
Trong nhiều trường hợp, bạn chỉ muốn cập nhật file đích nếu file nguồn có thay đổi mới hơn. Khi đó, dùng -u:
cp -u file.txt file_backup.txtTùy chọn này thường được dùng trong các tác vụ đồng bộ dữ liệu đơn giản.
Giữ nguyên thuộc tính file
Khi sao chép file trong môi trường quản trị hệ thống, việc giữ lại quyền truy cập, chủ sở hữu và thời gian chỉnh sửa có thể rất quan trọng. Tùy chọn -p giúp bảo toàn các thuộc tính này:
cp -p file.txt file_backup.txtĐây là lựa chọn nên cân nhắc khi sao chép file cấu hình, file log hoặc dữ liệu cần giữ nguyên metadata.
Hiển thị chi tiết quá trình sao chép
Nếu muốn xem rõ file nào đang được sao chép, bạn có thể thêm tùy chọn -v:
cp -v file.txt file_backup.txtTùy chọn này giúp dễ theo dõi thao tác, đặc biệt khi xử lý nhiều file hoặc chạy lệnh trong môi trường terminal từ xa.
Cách sao chép thư mục bằng lệnh cp
Để sao chép thư mục trong Linux, bạn không thể chỉ dùng cú pháp cơ bản như với file. Thay vào đó, cần thêm tùy chọn sao chép đệ quy.
Sao chép toàn bộ thư mục và thư mục con
Sử dụng -R hoặc -r để sao chép toàn bộ nội dung của một thư mục, bao gồm file và thư mục con bên trong:
cp -R Pictures Pictures_backupLệnh trên sẽ tạo thư mục Pictures_backup và chép toàn bộ dữ liệu từ Pictures sang đó.
Nếu thư mục đích đã tồn tại, thư mục nguồn sẽ được đặt vào bên trong thư mục đích, thay vì chỉ sao chép riêng nội dung của nó. Đây là điểm nhiều người mới dùng Linux dễ nhầm lẫn.
Chỉ sao chép nội dung bên trong thư mục
Nếu bạn muốn chép nội dung của thư mục nguồn mà không mang theo chính thư mục đó, có thể dùng tùy chọn -T kết hợp với -R:
cp -RT Pictures Pictures_backupCách này giúp thư mục đích nhận trực tiếp các file và thư mục con từ nguồn, thay vì tạo thêm một cấp thư mục lồng nhau.
Dùng ký tự đại diện để sao chép nội dung
Một cách khác là dùng dấu sao:
cp -RT Pictures/* Pictures_backup/Tuy nhiên, phương pháp này có một hạn chế quan trọng: nó không sao chép các file và thư mục ẩn, tức những mục có tên bắt đầu bằng dấu chấm như .env, .htaccess hoặc .config.
Khi sao chép thư mục trong Linux, hãy luôn kiểm tra xem bạn muốn sao chép cả thư mục nguồn hay chỉ nội dung bên trong. Sự khác biệt này ảnh hưởng trực tiếp đến cấu trúc dữ liệu tại đích.
Sao chép nhiều file và thư mục cùng lúc
Lệnh cp cho phép chỉ định nhiều nguồn trong cùng một lệnh. Khi đó, đối số cuối cùng phải là thư mục đích.
cp file.txt dir file1.txt dir1Nguyên tắc cần nhớ là:
- Nếu có từ hai nguồn trở lên, đích bắt buộc phải là thư mục.
- Bạn có thể kết hợp cả file và thư mục trong cùng một lệnh.
- Nếu có thư mục trong danh sách nguồn, cần dùng thêm -R để sao chép được nội dung của thư mục đó.
Đây là cách tiết kiệm thời gian khi bạn cần gom nhiều dữ liệu vào một thư mục backup hoặc thư mục triển khai.
Các tùy chọn cp thường dùng nên nhớ
Dưới đây là những tùy chọn phổ biến nhất khi sử dụng lệnh cp Linux:
- -R hoặc -r: sao chép thư mục và toàn bộ nội dung bên trong.
- -i: hỏi xác nhận trước khi ghi đè.
- -n: không ghi đè file đã tồn tại.
- -u: chỉ sao chép khi file nguồn mới hơn file đích.
- -p: giữ nguyên quyền, chủ sở hữu và thời gian sửa đổi.
- -v: hiển thị chi tiết quá trình sao chép.
- -T: xử lý đích như một thư mục thông thường khi sao chép nội dung.
Việc kết hợp đúng các tùy chọn sẽ giúp bạn thao tác an toàn hơn, đặc biệt trên máy chủ Linux hoặc hệ thống đang chạy dịch vụ thực tế.
Lưu ý về quyền truy cập khi dùng lệnh cp
Một trong những nguyên nhân phổ biến khiến lệnh cp thất bại là vấn đề quyền hạn. Để sao chép thành công, bạn cần:
- Có quyền đọc trên file hoặc thư mục nguồn.
- Có quyền ghi vào thư mục đích.
Nếu đang làm việc trên VPS, server hoặc thư mục hệ thống, bạn có thể gặp lỗi do user hiện tại không đủ quyền. Trong môi trường quản trị, hãy kiểm tra quyền bằng các lệnh như ls -l trước khi thao tác. Nếu cần, hãy thực hiện bằng tài khoản phù hợp.
Lệnh cp có dùng giống nhau trên các bản phân phối Linux không?
Trên các bản phân phối Linux phổ biến như Ubuntu, AlmaLinux, Rocky Linux, CentOS hay RHEL, cách dùng cp Linux về cơ bản là giống nhau. Các cú pháp và tùy chọn thông dụng nêu trên đều có thể áp dụng mà không cần thay đổi.
Điều này giúp bạn dễ dàng chuyển đổi giữa các môi trường khác nhau mà vẫn sử dụng cùng một cách sao chép file và thư mục.
Khi nào nên dùng cp và khi nào nên dùng công cụ khác?
cp rất phù hợp cho các tác vụ sao chép cục bộ trong cùng hệ thống. Nếu bạn chỉ cần nhân bản file, tạo bản backup nhanh hoặc sao chép thư mục trong Linux, đây là công cụ đơn giản và hiệu quả.
Tuy nhiên, nếu cần sao chép dữ liệu qua mạng hoặc đồng bộ giữa các máy chủ, bạn nên cân nhắc các công cụ chuyên biệt hơn như:
- scp để sao chép file qua SSH.
- rsync để đồng bộ dữ liệu hiệu quả và linh hoạt hơn.
Kết luận
Lệnh cp Linux là công cụ thiết yếu để sao chép file và thư mục trong môi trường dòng lệnh. Chỉ với một cú pháp ngắn gọn, bạn có thể sao chép file đơn lẻ, đổi tên khi chép, chép nhiều file cùng lúc hoặc sao chép toàn bộ thư mục một cách đệ quy. Quan trọng nhất là hiểu rõ cách xử lý đích, kiểm soát việc ghi đè và chú ý đến quyền truy cập để tránh lỗi không mong muốn.
Nếu bạn thường xuyên quản lý file trên Linux, nắm vững lệnh cp sẽ giúp công việc nhanh hơn, an toàn hơn và chuyên nghiệp hơn.

0 bình luận
Để lại bình luận
Bạn phải đăng nhập để gửi bình luận.