it-swarm-vi.tech

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

Tôi 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 quân đội. 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-files và 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ì?

57
Rory

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 OSX phiên bản 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.

19
robcast

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 là khó liên kết thay vì tạo bản sao mới tiết kiệm không gian.

(thực ra, tôi vẫn sử dụng rysnc- theo sau bởi -cp -al phương thức đạt được điều tương tự, xem http://www.mikerubel.org/computers/rsync_snapshots/ để biết cách chạy xuống cũ nhưng vẫn rất tốt cả kỹ thuậ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 điều rất hữu ích --dry-run cho một chút hoang tưởng khỏe mạnh, đặc biệt là khi bạn đang sử dụng --delete* tùy chọn.

18
David Spillett

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.

14
Bob

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 sang một vị trí khác.

10
TCampbell

--rsh của tôi.

Tôi đã sử dụng nó để thay đổi mật mã trên ssh thành một cái 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ó với 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 [email protected] ssh -TA -l userB" /tmp/foobar/ hostB:/tmp/foobar/).

8
--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.

7
jftuga

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]'
6
nealmcb

--archive là một lựa chọn tiêu chuẩn (mặc dù không phải là 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 muốn bao gồm --times, sẽ sao chép qua thời gian sửa đổi của 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) nhiề nhanh hơn, 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 (với tôi ít nhất) tùy chọn này không phải là mặc định.

5
Andrew Ferrier

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.

4
Hubert Kario

Người tôi sử dụng nhiều nhất chắc chắn là --exclude-from cho phép bạn chỉ định một tệp chứa những thứ cần loại trừ.

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

4
innaM

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

4
Konrad

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

3
innaM

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

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.

2
jftuga
--partial 

Trong trường hợp bị 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

2
rebelbass

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
sybreon

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ị hỏng 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

1
vahid chakoshy