rsync untuk arsip file terkompresi

11

Saya mengambil cadangan server dengan rsync, tetapi cadangan itu cukup besar, dan saya ingin mengompresnya. Apakah ada cara untuk memiliki semacam pembungkus rsync untuk mem-gunzip file di cadangan, rsync perubahan dari file langsung, lalu g-gzip file segera setelah disalin?

Yaitu jika sumber file pada live foo , bar dan baz , cadangan memiliki foo.gz , bar.gz dan baz.gz .

Untuk menyatakan kembali: Saya ingin file terkompresi di satu ujung dan file tidak terkompresi di ujung lainnya. Saya tidak ingin mengompres sebelum rsyncing, karena bahkan dengan --rsyncable, itu membuat rsync kurang efisien. Saya tahu tentang opsi -z ke rsync. Saya tidak punya ruang pada mesin cadangan untuk menyimpan semua file yang tidak terkompresi.

rjmunro
sumber

Jawaban:

10

Saya tidak yakin saya mengerti apa yang Anda coba lakukan, tetapi Anda dapat membuat cadangan gzip di server utama memastikan bahwa mereka siap di-rsyncable dan tidak repot-repot mendekompresi apa pun dalam perjalanan.

gzip(1)

--rsyncable
       While compressing, synchronize the output occasionally based on
       the  input.   This  increases  size by less than 1 percent most
       cases, but means that the rsync(1) program can much more  effi‐
       ciently  synchronize  files  compressed with this flag.  gunzip
       cannot tell the difference between a  compressed  file  created
       with this option, and one created without it.
AB
sumber
Bagus. Saya tidak tahu tentang bendera rsyncable. Itu berguna. Saya bertanya-tanya mengapa itu bukan default untuk kehilangan 1%
Matt Simmons
NB: opsi --rsyncable tidak tersedia di semua versi gzip, dan itu juga berasal dari tambalan yang biasa diterapkan daripada kode inti gzip, jadi nomor versi tidak cukup untuk mengetahui jika Anda memilikinya.
mc0e
-1

Anda dapat menulis pembungkus ke rsync. Jika Anda 'menarik' data, tidak ada yang istimewa untuk dilakukan. Jika Anda ingin 'mendorong' data dari mesin asli ke server cadangan, lebih rumit untuk membuatnya berfungsi:

Pertama, Anda harus memastikan pembungkus dipanggil dengan nama, jalur, dan parameter yang sama dengan rsync asli, setidaknya untuk pengguna yang Anda gunakan untuk menjalankan pencadangan.

Kedua, pastikan untuk tidak menulis apa pun untuk stdout, karena itu akan merusak saluran komunikasi.

Dan ketiga, pastikan untuk melewati semua parameter yang Anda dapatkan, cukup modifikasi yang sesuai untuk tujuan yang baru dikompresi.

Javier
sumber
-2

Dia mungkin mencari kompresi transmisi data melalui rsync, bukan kompresi file di ujung lain.

Lihat: http://jimmyg.org/blog/2007/rsync-basics.html

Parameter kompresi dari halaman manual:

   -z, --compress              compress file data during the transfer

        --compress-level=NUM    explicitly set compression level

Secara default ssh melakukan kompresi sendiri sampai batas tertentu. Saya tidak tahu seberapa baik rsync lebih baik daripada ssh asli. Jika sebagian besar file Anda sudah dikompres menjadi file gzip, mungkin tidak banyak yang dapat dilakukan mekanisme kompresi rsync untuk Anda. Anda hanya dapat memeras file begitu banyak.


sumber
Tidak, saya mencari kompresi file di satu ujung saja. rsyncing file yang sudah dikompresi tidak efisien, jadi saya ingin bagian rsync terjadi dengan data yang tidak terkompresi.
rjmunro