Android

Cách loại trừ tệp và thư mục với rsync

Cá sấu mõm ngắn giết chết đồng loại để ăn thịt

Cá sấu mõm ngắn giết chết đồng loại để ăn thịt

Mục lục:

Anonim

Rsync là một tiện ích dòng lệnh nhanh và linh hoạt, đồng bộ hóa các tệp và thư mục giữa hai vị trí trên một vỏ từ xa.

Với Rsync, bạn có thể phản chiếu dữ liệu, tạo bản sao lưu gia tăng và sao chép tệp giữa các hệ thống. Khi sao chép dữ liệu, bạn có thể muốn loại trừ một hoặc nhiều tệp hoặc thư mục dựa trên tên hoặc vị trí của chúng.

Trong hướng dẫn này, chúng tôi sẽ chỉ cho bạn cách loại trừ các tệp và thư mục bằng rsync.

Trước khi bắt đầu

Bạn nên có kiến ​​thức cơ bản về cách rsync hoạt động.

Trong các ví dụ dưới đây, chúng tôi sẽ sử dụng rsync với tùy chọn -a ,. Điều này cho rsync đồng bộ hóa các thư mục theo cách đệ quy, chuyển các thiết bị đặc biệt và chặn và bảo toàn các liên kết tượng trưng, ​​thời gian sửa đổi, nhóm, quyền sở hữu và quyền.

Khi loại trừ các tệp hoặc thư mục, bạn cần sử dụng các đường dẫn tương đối của chúng đến thư mục nguồn.

Có hai tùy chọn để chỉ định các tệp và thư mục bạn muốn loại trừ:

  • Từ một dòng lệnh, sử dụng tùy chọn --exclude . Từ một tệp, sử dụng tùy chọn --exclude-from .

Loại trừ một tệp cụ thể

Để loại trừ một tệp cụ thể, chuyển đường dẫn tương đối đến tệp vào tùy chọn --exclude .

Trong ví dụ sau, tệp src_directory/file.txt sẽ không được chuyển:

rsync -a --exclude 'file.txt' src_directory/ dst_directory/

Loại trừ một thư mục cụ thể

Loại trừ một thư mục cụ thể giống như loại trừ một tệp, chỉ cần chuyển đường dẫn tương đối đến thư mục vào tùy chọn --exclude như hiển thị bên dưới:

rsync -a --exclude 'dir1' src_directory/ dst_directory/

rsync -a --exclude 'dir1/*' src_directory/ dst_directory/

Loại trừ nhiều tệp hoặc thư mục

Để loại trừ nhiều tệp hoặc thư mục chỉ cần chỉ định nhiều tùy chọn - bao gồm:

rsync -a --exclude 'file1.txt' --exclude 'dir1/*' --exclude 'dir2' src_directory/ dst_directory/

rsync -a --exclude={'file1.txt', 'dir1/*', 'dir2'} src_directory/ dst_directory/

Nếu số lượng tệp và / hoặc thư mục bạn muốn loại trừ là lớn, thay vì sử dụng nhiều tùy chọn --exclude bạn có thể chỉ định các tệp và thư mục bạn muốn loại trừ trong tệp và chuyển tệp sang --exclude-from Lựa chọn.

Lệnh dưới đây thực hiện chính xác như lệnh trên:

rsync -a --exclude-from='exclude-file.txt' src_directory/ dst_directory/ loại trừ-file.txt

file1.txt dir1/* dir2

Loại trừ nhiều tệp hoặc thư mục dựa trên một mẫu

Với rsync, bạn cũng có thể loại trừ các tệp và thư mục dựa trên mẫu khớp với tên tệp hoặc thư mục.

Ví dụ: để loại trừ tất cả các tệp .jpg bạn sẽ chạy:

rsync -a --exclude '*.jpg*' src_directory/ dst_directory/

Sẽ khó hơn một chút để loại trừ tất cả các tệp và thư mục khác ngoại trừ những tệp phù hợp với một mẫu nhất định. Giả sử bạn muốn loại trừ tất cả các tệp và thư mục khác ngoại trừ các tệp kết thúc bằng .jpg .

Một tùy chọn là sử dụng lệnh sau:

rsync -a -m --include='*.jpg' --include='*/' --exclude='*' src_directory/ dst_directory/

Khi sử dụng nhiều tùy chọn bao gồm / loại trừ, quy tắc khớp đầu tiên sẽ được áp dụng.

  • --include='*.jpg' - Đầu tiên chúng tôi bao gồm tất cả các tệp .jpg . --include='*/' - Sau đó, chúng tôi bao gồm tất cả các thư mục bên trong thư mục src_directory . Nếu không có rsync này sẽ chỉ sao chép các tệp *.jpg trong thư mục cấp cao nhất. -m - Loại bỏ các thư mục trống.

Một tùy chọn khác là chuyển đầu ra của lệnh find sang rsync:

find src_directory/ -name "*.jpg" -printf %P\\0\\n | rsync -a --files-from=- src_directory/ dst_directory/

  • -printf %P\\0\\n - sẽ xóa src_directory/ khỏi đường dẫn tệp. --files-from=- - có nghĩa là chỉ bao gồm các tệp từ đầu vào tiêu chuẩn (các tệp được truyền từ lệnh find).

Phần kết luận

Trong hướng dẫn này, bạn đã học cách loại trừ các tệp và thư mục khi truyền dữ liệu bằng Rupync. Có nhiều hơn nữa để tìm hiểu về Rupync tại trang Hướng dẫn sử dụng của Rsync.

thiết bị đầu cuối rsync