nội dung thư mục sao chép rsync không đệ quy


8

Tôi đang cố gắng sao chép nội dung của một loạt các thư mục không đệ quy sang một hệ thống từ xa khác.

/dirA/dir1/file
/dirA/dir2/file
/dirA/dir3/file

dir1, dir2 và dir3 chứa nhiều thư mục mà tôi không muốn sao chép. Sao chép trên máy chủ từ xa để / dirB duy trì cấu trúc thư mục tương tự.

Tôi đã thử:

rsync /dirA/*/ host:/dirB/
rsync /dirA/   host:/dirB/

Nhưng họ không làm những gì tôi muốn.

Câu trả lời:


20

rsync cho phép bạn chỉ định các mẫu kích hoạt bao gồm hoặc loại trừ các tệp và thư mục. Tôi nghĩ rằng bạn muốn sử dụng một cái gì đó như thế này:

rsync -a -f '- /*/*/' /dirA/ host:/dirB/

Giải trình:

  • -akích hoạt chế độ lưu trữ kích hoạt cả đệ quy và bảo toàn "liên kết tượng trưng, ​​thiết bị, thuộc tính, quyền, quyền sở hữu, v.v.", theo man rsync.
  • -flà viết tắt của --filter=, trong đó thêm một quy tắc lọc tệp.
    • Mẫu nằm trong dấu ngoặc đơn để shell không mở rộng ký tự đại diện; báo giá kép sẽ làm việc tốt như nhau trong trường hợp này.
    • - có nghĩa đây là một mẫu loại trừ.
    • Hàng đầu /có nghĩa là mẫu phải bắt đầu tại dirA/(rsync "transfer-root").
    • Phần */*của mẫu đề cập đến bất cứ điều gì bên trong thư mục con.
    • Các trailing /giới hạn loại trừ vào các thư mục. Các tập tin trong thư mục con dirA/không bị ảnh hưởng.

Vì vậy, cuối cùng, rsync sao chép không có gì nhiều hơn một cấp (và cũng không tạo thư mục cấp hai).


2
Rất đẹp! Tôi chỉ có thể sử dụng -f '- /*/'để giới hạn các tệp cấp cao nhất. Tôi cũng phải xác định -f '- .*'để loại trừ các tập tin dấu chấm, vì tôi đang đồng bộ hóa một thư mục chính.
haridsv

5

Giải pháp trên (của PleaseStand) không hiệu quả với tôi vì một số lý do. Điều này làm việc mặc dù:

rsync -avc --no-r ./source/* ./destination/

Ngoài ra còn có một thay thế này:

rsync -avc --exclude "/" ./source/ ./destination/


1

Một trong những "tính năng" của rsync là cách các thư mục được phân tích cú pháp.

rsync /dirA/ host:/dirB/rsync /dirA host:/dirB về mặt lý thuyết nên tương đương.

Vì không muốn khuyến khích đệ quy, bạn muốn tránh -r, -angoài những điều khác ngụ ý -r.

Tôi vẫn chưa hoàn thành với nghiên cứu, nhưng đây là câu trả lời bắt đầu của tôi.

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.