Làm cách nào tôi có thể sử dụng cp để sao chép một thư mục nhưng bỏ qua một thư mục con nhất định trong Linux


9

Do vấn đề về đĩa cứng, tôi đang cố gắng chuyển một phân vùng từ đĩa cứng này sang đĩa cứng khác. Tôi đang theo dõi http://www.ibm.com/developerworks/l Library / l-partplan.html bài viết để làm điều đó. Trong phần sao chép, tôi muốn bỏ qua một thư mục con cụ thể. Làm thế nào tôi có thể hoàn thành việc ghi nhớ khi sao chép Tôi phải giữ nhóm chủ sở hữu và dấu thời gian của mình. Có khoảng 700 GB dữ liệu cần được sao chép nếu tôi không bỏ qua một thư mục con cụ thể.

Câu trả lời:


11

rsync -ax --exclude [relative path to directory to exclude] /path/from /path/to

Bạn có thể muốn (hoặc không) sử dụng --dellà tốt. Kiểm tra trang hướng dẫn.


Vâng, đó là mẹo. Điều này hoạt động ..
P Roy

2

Thông thường tôi sử dụng cpionhư sau,

cd source_dir; find . -depth | cpio -pdmv dest_dir

Và vì đây là một đường ống dẫn nên bạn có thể đặt "bộ lọc trừ" ở giữa.

cd sourcedir; find . -depth | grep -v exclude_dir | cpio -pdmv dest_dir

hoặc bạn có thể chia nó thành nhiều bước,

cd source_dir; find . -depth > files.lst
gedit files.lst  # (take out the offending directory and files and save back to files.lst)
cpio -pdmv dest_dir < files.lst

Tất nhiên tôi sẽ thử nghiệm điều này trên một cái gì đó nhỏ hơn trước nhưng bạn có ý tưởng.


0

Bạn có thể viết một tập lệnh bash đơn giản với một vòng lặp để bỏ qua đường dẫn nhất định mà bạn không muốn sao chép và sao chép phần còn lại. Một giải pháp khác có thể là chúng ta biểu thức chính quy. Bạn có thể đọc về bash scripting tại đây -> http://tldp.org/LDP/Bash-Beginners-Guide/html/Bash-Beginners-Guide.html Hướng dẫn Regex tại đây -> http: //www.THER-expressions. thông tin /


0

Bạn có thể tạm thời di chuyển ( mv) thư mục con lớn đến một vị trí khác, thực hiện sao chép và sau đó khôi phục thư mục con không? Tôi không thể thấy một tùy chọn trực tiếp cpđể làm điều này.


Tôi cũng đã kiểm tra cp người đàn ông, không có cách nào để bỏ qua việc sử dụng cp. Tôi có 550 GB dữ liệu trong thư mục con đó và mv có thể mất hàng giờ.
P Roy

Tôi giả sử mv sẽ là một hoạt động chi phí tương đối thấp - cập nhật các tham chiếu đến dữ liệu thay vì di chuyển vật lý trên đĩa. Ít nhất, tôi luôn thấy các động thái trong Windows nhanh hơn các bản sao - hệ thống tệp Linux có thể hoạt động hoàn toàn khác.
Tro

mv vào cùng một đĩa cứng là nhanh. Nhưng khi một người thực hiện một mv trên hardisks tôi nghĩ rằng nó mất cùng thời gian với một cp.
P Roy

Tôi có nghĩa là di chuyển nó đến một nơi nào đó trên cùng một đĩa cứng để đưa nó ra khỏi đường đi, sau đó sao chép phần còn lại vào đĩa từ xa, sau đó di chuyển tệp lớn trở lại. Trừ khi bạn sao chép toàn bộ đĩa từ /.
Tro

0

Giải pháp khá xấu xí nhưng ... tại sao không chỉ cp mọi thứ trong thư mục không đệ quy, và sau đó sao chép các thư mục riêng lẻ qua đệ quy?


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.