Mẹo và thủ thuật rsync yêu thích


57

Càng sử dụng rsync, tôi càng nhận ra rằng đó là một con dao chuyển tập tin. Có rất nhiều sự lựa chọn. Gần đây tôi phát hiện ra rằng bạn có thể đi --remove-source-filesvà nó sẽ xóa một tệp khỏi nguồn khi nó được sao chép, điều này làm cho nó di chuyển nhiều hơn một chút, thay vì sao chép chương trình. :)

Bạn yêu thích mẹo và thủ thuật rsync nhỏ là gì?

Câu trả lời:


19

Hãy thử sử dụng rsync phiên bản 3 nếu bạn phải đồng bộ nhiều tệp! V3 xây dựng danh sách tệp của mình tăng dần và nhanh hơn nhiều và sử dụng ít bộ nhớ hơn phiên bản 2.

Tùy thuộc vào nền tảng của bạn, điều này có thể làm cho khá khác biệt. Trên phiên bản OSX 2.6.3 sẽ mất hơn một giờ hoặc gặp sự cố khi cố gắng xây dựng chỉ mục 5 triệu tệp trong khi phiên bản 3.0.2 tôi đã biên dịch bắt đầu sao chép ngay lập tức.


Một điều cần lưu ý là nếu bạn sử dụng một số tùy chọn ( --delete-beforeví dụ như) thì hành vi "xây dựng danh sách đầu tiên" cũ được sử dụng vì các tùy chọn này hoạt động chính xác - vì vậy nếu bạn không thấy hành vi này hãy kiểm tra xem các tùy chọn khác mà bạn đang sử dụng được biết là có thể ngăn chặn nó. Điều này có thể hữu ích nếu bạn đang sử dụng rsync tương tác trên một cây lớn và muốn buộc quét lần đầu để đầu ra --progresschính xác (nghĩa là số lượng "đối tượng để so sánh" sẽ không bao giờ tăng vì sẽ không tìm thấy đối tượng mới nào sau lần quét ban đầu ).
David Spillett

18

Sử dụng --link-destđể tạo các bản sao lưu dựa trên ảnh chụp nhanh hiệu quả trong không gian, theo đó bạn dường như có nhiều bản sao hoàn chỉnh của dữ liệu sao lưu (một cho mỗi lần chạy sao lưu) nhưng các tệp không thay đổi giữa các lần chạy được liên kết cứng thay vì tạo bản sao mới tiết kiệm không gian.

(trên thực tế, tôi vẫn sử dụng phương pháp rysnc-followed-by-cp -al để đạt được điều tương tự, xem http://www.mikerubel.org/computers/rsync_snapshots/ để biết cách sử dụng cả hai kỹ thuật cũ nhưng vẫn rất tốt và các vấn đề liên quan)

Một nhược điểm lớn của kỹ thuật này là nếu một tệp bị hỏng do lỗi đĩa thì nó cũng bị hỏng trong tất cả các ảnh chụp liên kết đến tệp đó, nhưng tôi cũng có các bản sao lưu ngoại tuyến để bảo vệ chống lại điều này ở mức độ tốt. Một điều khác cần chú ý là hệ thống tập tin của bạn có đủ các nút hoặc bạn sẽ hết chúng trước khi bạn thực sự hết dung lượng đĩa (mặc dù tôi chưa bao giờ gặp sự cố với mặc định ext2 / 3).

Ngoài ra, đừng bao giờ quên rất rất hữu ích --dry-runcho một chút hoang tưởng lành mạnh, đặc biệt là khi bạn đang sử dụng các --delete*tùy chọn.


6
+1 cho --dry-run
David Z

1
Lưu ý rằng -n là lối tắt cho --dry-run
ctennis

3
Tôi thích gắn bó với những cái tên dài, đặc biệt là trong các kịch bản mà những người khác có thể sẽ duy trì. Nó làm cho nó rõ ràng hơn những gì được dự định mà không cần tham khảo các tài liệu.
David Spillett

+1 Tôi đã triển khai một giải pháp sao lưu nhiều TB trên nhiều máy bằng phương pháp --link-Dest cho các ảnh chụp nhanh được liên kết cứng như mô tả ở trên - nó hoạt động hoàn hảo.
matja

Nếu bạn thích sao lưu --link-Dest, hãy xem Dirvish sử dụng rsync dưới mui xe
hfs

14

Nếu bạn cần cập nhật một trang web với một số tệp lớn qua liên kết chậm, bạn có thể chuyển các tệp nhỏ theo cách này:

rsync -a --max-size = 100K / var / www / there: / var / www /

sau đó làm điều này cho các tập tin lớn:

rsync -a --min-size = 100K --bwlimit = 100 / var / www / there: / var / www /

rsync có rất nhiều tùy chọn có ích cho các trang web. Thật không may, nó không có cách tích hợp để phát hiện các bản cập nhật đồng thời, vì vậy bạn phải thêm logic vào các tập lệnh cron để tránh ghi đè lên các tệp lớn.


10

Tôi sử dụng tùy chọn - hiện tại khi cố gắng giữ một tập hợp con nhỏ của các tệp từ một thư mục được đồng bộ hóa đến một vị trí khác.


Cảm ơn! Điều này chỉ cứu tôi khỏi một số văn bản quy tắc bộ lọc khó chịu.
benzado

8

--rsh của tôi.

Tôi đã sử dụng nó để thay đổi mật mã trên ssh thành thứ gì đó nhanh hơn ( --rsh="ssh -c arcfour") cũng để thiết lập một chuỗi sshs (khuyên bạn nên sử dụng nó ssh-agent) để đồng bộ hóa các tệp giữa các máy chủ không thể nói chuyện trực tiếp. ( rsync -av --rsh="ssh -TA userA@hostA ssh -TA -l userB" /tmp/foobar/ hostB:/tmp/foobar/).


7
--time-limit

Khi tùy chọn này được sử dụng, rsync sẽ dừng sau T phút và thoát. Tôi nghĩ tùy chọn này hữu ích khi kết nối một lượng lớn dữ liệu vào ban đêm (giờ không bận rộn) và sau đó dừng lại khi đến lúc mọi người bắt đầu sử dụng mạng vào ban ngày (giờ bận rộn).

--stop-at=y-m-dTh:m

Tùy chọn này cho phép bạn chỉ định thời gian dừng rsync.

Batch Mode

Chế độ hàng loạt có thể được sử dụng để áp dụng cùng một bộ cập nhật cho nhiều hệ thống giống hệt nhau.


Hữu ích! Tôi đã sử dụng lệnh "at" trước đây để giết tiến trình
Lionel

Các bản vá nguồn: rsync.samba.org/ftp/rsync/rsync-patches-3.1.0.tar.gz ; Win32 nhị phân có bản vá bao gồm: itefix.no/i2/cwrsync
jftuga

2
Thật không may, các tùy chọn này không có sẵn trong rsync được phân phối với các bản phân phối Redhat / Centos hoặc Ubuntu.
IanB

@Lionel: Làm thế nào bạn sử dụng atđể giết quá trình?
IMTheNachoMan

6

Nếu bạn đang tự hỏi một rsync chạy chậm đã đi được bao xa và không sử dụng -v để liệt kê các tệp khi chúng được chuyển, bạn có thể tìm hiểu xem tệp nào đã mở:

 ls -l /proc/$(pidof rsync)/fd/*

trên một hệ thống có / Proc

Ví dụ, rsync đã được treo cho tôi ngay bây giờ, mặc dù hệ thống từ xa dường như chỉ còn một khoảng trống. Thủ thuật này đã giúp tôi tìm thấy tập tin khổng lồ bất ngờ mà tôi không nhớ, nó không phù hợp ở đầu bên kia.

Nó cũng cho tôi biết thêm một chút thông tin thú vị - đầu kia rõ ràng đã bỏ cuộc, vì cũng có một liên kết ổ cắm bị hỏng:

/proc/22954/fd/4: broken symbolic link to `socket:[2387837]'

5

--archive là một lựa chọn tiêu chuẩn (mặc dù không phải mặc định) cho các công việc giống như sao lưu, đảm bảo hầu hết siêu dữ liệu từ các tệp nguồn (quyền, quyền sở hữu, v.v.) được sao chép qua.

Tuy nhiên, nếu bạn không muốn sử dụng điều đó, đôi khi bạn vẫn sẽ muốn đưa vào --times, điều này sẽ sao chép qua thời gian sửa đổi của các tệp. Điều này làm cho rsync tiếp theo chạy (giả sử bạn đang thực hiện liên tục) nhanh hơn nhiều , vì rsync so sánh thời gian sửa đổi và bỏ qua tệp nếu nó không thay đổi. Đáng ngạc nhiên (ít nhất là với tôi) tùy chọn này không phải là mặc định.


4

Cái tôi sử dụng nhiều nhất chắc chắn --exclude-fromcho phép bạn chỉ định một tệp chứa những thứ cần loại trừ.

Tôi cũng thấy --chmodrất hữu ích vì nó cho phép bạn đảm bảo rằng các quyền cuối cùng ở trạng thái mong muốn ngay cả khi nguồn của bạn bị rối.


4

date +%Y.%m.%d--backup -dir = --delete Chúng tôi đang xóa nhưng tạo một bản sao ... chỉ trong trường hợp


4

Của tôi là --inplace. Hoạt động kỳ diệu khi máy chủ để sao lưu đang chạy ZFS hoặc btrfs và bạn tạo ảnh chụp nhanh gốc.


3

Tất nhiên, cũng --deletecó loại bỏ nội dung khỏi mục tiêu không thể tìm thấy trong nguồn.


2

cwrsync - Rsync cho Windows http://www.itefix.no/i2/node/10650

Phiên bản này bao gồm OpenSSH để bạn có thể chuyển các tập tin qua một kênh an toàn.


Tôi sử dụng cwrsync, và nó thật tuyệt. Rất vui vì ai đó đã mang khả năng tuyệt vời này cho Windows.
Andrew Oblley

2
--partial 

Trong trường hợp gián đoạn

--bwlimit=100

Để giới hạn băng thông - tốt cho việc sao chép các tệp, thư mục lớn


Đơn vị của là bwlimitgì? bit trên giây, byte mỗi giây?
Timo Kähkönen

@Timo, bwlimit tính bằng KBytes / giây.
Andrew Ferrier

1

Nếu bạn có rsync được thiết lập như một daemon trên máy chủ, bạn chỉ có thể duyệt các mô-đun được chia sẻ như bất kỳ danh sách thư mục khác. Sau đó, bạn có thể xem những đường dẫn có sẵn và những gì không.


1

Khi tôi sử dụng GlusterF, chúng tôi có một nút cổ chai với các tệp T có kích thước bằng 0, để đồng bộ giữa gạch bị sao chép hoặc bản sao, chúng tôi phải sử dụng --min-size=1để không đồng bộ hóa tệp trống từ máy chủ bị sập

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.