Saya menggunakan rsync untuk membuat cadangan repositori yang berisi banyak file gz termasuk banyak yang baru setiap hari. Cadangan rsync berlangsung lebih lambat dari yang seharusnya karena file-file gz ini tidak dibangun dengan opsi --rsyncable gzip (yang membuat file-file gz jauh lebih 'ramah-rsync-friendly' tanpa meningkatkan ukurannya secara signifikan atau memengaruhi kompatibilitasnya). Dan saya tidak dapat memperbaiki masalah pada saat pembuatan karena file-file tersebut dihasilkan oleh skrip python (rdiff-backup) yang menggunakan modul gzip python dan ini tidak mendukung yang setara dengan gzip --rsyncable.
Jadi sebelum menjalankan rsync saya dapat mengidentifikasi file gz baru dalam data sumber (yaitu baru sejak terakhir kali rsync dijalankan). Sekarang saya ingin 'kembali gzip' file-file ini sehingga mereka di-gzip dalam format rsyncable. Kemudian saya dapat menjalankan rsync dari sumber yang dioptimalkan.
Saya pikir ini berarti menjalankan setiap file melalui gunzip dan kemudian gzip --rsyncable tapi saya tidak terlalu yakin bagaimana melakukan ini dengan cara yang tidak akan berisiko kehilangan data atau metadata. Saran diterima dengan penuh syukur.
--rsyncable
penting adalah jika file-file tersebut diubah antara berjalan danrsync
mencoba untuk mengirim perubahan. File-file baru tidak peduli apakah dapat di-sinkronisasi ulang atau tidak, karenarsync
harus tetap mengirim semua data. Apakah file sedang diubah antara rsync berjalan?--rsyncable
.-a
bendera. Juga, versi gzip saya tidak memiliki--rsyncable
flag, tetapi ia datang dengan sebuah program bernamaznew
yang mungkin dapat digunakan untuk apa yang Anda butuhkan.--rsyncable
itu tidak akan membantu. Saya berharap untuk satu baris kode atau skrip pendek yang akan dengan aman membongkar arsip gz dan membungkusnya kembali menggunakan--rsyncable
. Tapi itu hanya pertanyaan akademis bagiku sekarang.Jawaban:
sumber
gunzip | gzip
, Anda kehilangan nama dan waktu yang tidak terkompresi seperti yang tersimpan dalam file gz (dan terlihat bersamagzip -vNl
)