Tôi đã sử dụng một rsynctậ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 rsynclệ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 rsyncquá trình song song (sử dụng &, xargshoặ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 cdvà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 rsyncquy trình để giảm thời gian thực hiện?
rsyncs là ưu tiên hàng đầu của chúng tôi.
rsyncs song song là trọng tâm chính bây giờ.