Tôi đã sử dụng một rsync
tập lệnh để đồng bộ hóa dữ liệu tại một máy chủ với dữ liệu tại một máy chủ khác. Dữ liệu có nhiều tệp kích thước nhỏ góp phần lên tới gần 1,2TB.
Để đồng bộ các tệp đó, tôi đã sử dụng rsync
lệnh như sau:
rsync -avzm --stats --human-readable --include-from proj.lst /data/projects REMOTEHOST:/data/
Nội dung của proj.lst như sau:
+ proj1
+ proj1/*
+ proj1/*/*
+ proj1/*/*/*.tar
+ proj1/*/*/*.pdf
+ proj2
+ proj2/*
+ proj2/*/*
+ proj2/*/*/*.tar
+ proj2/*/*/*.pdf
...
...
...
- *
Để thử nghiệm, tôi đã chọn hai trong số các dự án đó (8,5 GB dữ liệu) và tôi đã thực hiện lệnh trên. Là một quá trình tuần tự, nó hoàn thành 14 phút 58 giây. Vì vậy, đối với 1,2TB dữ liệu sẽ mất vài giờ.
Nếu tôi sẽ có thể nhiều rsync
quá trình song song (sử dụng &
, xargs
hoặc parallel
), nó sẽ tiết kiệm thời gian của tôi.
Tôi đã thử với lệnh bên dưới với parallel
(sau khi cd
vào thư mục nguồn) và phải mất 12 phút 37 giây để thực thi:
parallel --will-cite -j 5 rsync -avzm --stats --human-readable {} REMOTEHOST:/data/ ::: .
Điều này sẽ mất ít hơn 5 lần thời gian, nhưng nó đã không. Tôi nghĩ rằng, tôi đang đi sai ở đâu đó.
Làm thế nào tôi có thể chạy nhiều rsync
quy trình để giảm thời gian thực hiện?
rsync
s là ưu tiên hàng đầu của chúng tôi.
rsync
s song song là trọng tâm chính bây giờ.