Tôi đang sử dụng rsync để sao lưu kho chứa nhiều tệp gz bao gồm nhiều tệp mới mỗi ngày. Việc sao lưu rsync tiến hành chậm hơn so với bình thường vì các tệp gz này không được xây dựng với tùy chọn --rsyncable của gzip (giúp các tệp gz trở nên 'thân thiện với rsync' hơn mà không làm tăng đáng kể kích thước hoặc ảnh hưởng đến khả năng tương thích của chúng). Và tôi không thể khắc phục sự cố tại thời điểm tạo vì các tệp được tạo bởi tập lệnh python (sao lưu dự phòng) sử dụng mô-đun gzip của python và điều này không hỗ trợ tương đương với --rsyncable của gzip.
Vì vậy, trước khi chạy rsync, tôi có thể xác định bất kỳ tệp gz mới nào trong dữ liệu nguồn (tức là mới kể từ lần cuối rsync được chạy). Bây giờ tôi muốn 're-gzip' các tệp này để chúng được nén ở định dạng rsyncable. Sau đó, tôi có thể chạy rsync từ nguồn được tối ưu hóa.
Tôi nghĩ điều này có nghĩa là chạy từng tệp thông qua gunzip và sau đó gzip --rsyncable nhưng tôi không chắc chắn làm thế nào để làm điều này theo cách không có nguy cơ mất dữ liệu hoặc siêu dữ liệu. Gợi ý nhận ơn.
--rsyncable
.
-a
cờ. Ngoài ra, phiên bản gzip của tôi không có --rsyncable
cờ, nhưng nó đi kèm với một chương trình có tên znew
có thể được sử dụng cho những gì bạn cần.
--rsyncable
sẽ không giúp ích gì. Tôi đã hy vọng cho một dòng mã hoặc tập lệnh ngắn sẽ giải nén an toàn một kho lưu trữ gz và đóng gói lại bằng cách sử dụng --rsyncable
. Nhưng bây giờ nó chỉ là một câu hỏi học thuật.
--rsyncable
trọng là nếu các tệp bị thay đổi giữa các lần chạy vàrsync
cố gắng gửi các thay đổi. Các tệp mới không quan tâm liệu chúng có thể được đồng bộ hóa hay không, vìrsync
dù sao cũng phải gửi tất cả dữ liệu. Các tập tin đang được thay đổi giữa các lần chạy rsync?