rsync ไปยังไฟล์บีบอัดที่เก็บถาวร


11

ฉันใช้การสำรองข้อมูลของเซิร์ฟเวอร์ที่มี rsync แต่การสำรองข้อมูลเหล่านั้นมีขนาดค่อนข้างใหญ่และฉันต้องการบีบอัดข้อมูลเหล่านั้น มีวิธีที่จะมี wrapper เรียงรอบ rsync เพื่อ gunzip ไฟล์ในการสำรองข้อมูล rsync การเปลี่ยนแปลงจากไฟล์สดแล้ว re-gzip ไฟล์ทันทีที่คัดลอก?

เช่นถ้าไฟล์ที่มาในชีวิตอยู่foo , บาร์และbazสำรองมีfoo.gz , bar.gzและbaz.gz

ในการเรียกคืน: ฉันต้องการไฟล์บีบอัดที่ปลายด้านหนึ่งและไม่มีการบีบอัดไฟล์ที่ปลายอีกด้าน ฉันไม่ต้องการที่จะบีบอัดก่อนที่จะซิงค์เพราะแม้จะมี --rsyncable ก็ทำให้ rsync มีประสิทธิภาพน้อยลง ฉันรู้เกี่ยวกับตัวเลือก -z เพื่อ rsync ฉันไม่มีพื้นที่บนเครื่องสำรองเพื่อจัดเก็บไฟล์ทั้งหมดที่ไม่มีการบีบอัด

คำตอบ:


10

ฉันไม่แน่ใจว่าฉันเข้าใจสิ่งที่คุณพยายามทำ แต่คุณสามารถสร้างการสำรองข้อมูล gzipped บนเซิร์ฟเวอร์หลักเพื่อให้แน่ใจว่าพวกเขาสามารถ rsyncable ได้อย่างง่ายดายและไม่ต้องกังวลกับการบีบอัดข้อมูลใด ๆ

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.

ดี ฉันไม่รู้เกี่ยวกับการตั้งค่าสถานะ rsyncable นั่นเป็นประโยชน์ ผมสงสัยว่าทำไมที่ไม่ได้เริ่มต้นสำหรับการสูญเสีย 1%
แมตต์ซิมมอนส์

หมายเหตุ: ตัวเลือก --rsyncable นั้นไม่สามารถใช้ได้กับทุกรุ่นของ gzip และมันมาจาก patch ที่ใช้กันทั่วไปมากกว่ารหัส core gzip ดังนั้นหมายเลขรุ่นจึงไม่เพียงพอที่จะรู้ว่าคุณมีหรือไม่
mc0e

6

ฉันคิดว่า rsyncing กับระบบไฟล์ที่ติดตั้งฟิวส์บีบอัดอาจเป็นตัวเลือกที่ดีที่สุด ประวัติของโครงการระบุถึงการปรับปรุงประสิทธิภาพของ rsync โดยเฉพาะ

http://code.google.com/p/fusecompress/

https://github.com/tex/fusecompress/


-1

คุณสามารถเขียน wrapper เพื่อ rsync หากคุณ 'ดึง' ข้อมูลไม่มีอะไรพิเศษที่ต้องทำ หากคุณต้องการ 'ดัน' ข้อมูลจากเครื่องดั้งเดิมไปยังเซิร์ฟเวอร์สำรองข้อมูลจะมีความละเอียดอ่อนกว่าเพื่อให้ใช้งานได้:

ก่อนอื่นคุณต้องแน่ใจว่ามีการเรียกใช้ wrapper ด้วยชื่อพา ธ และพารามิเตอร์เดียวกันกับ rsync ดั้งเดิมอย่างน้อยที่สุดสำหรับผู้ใช้ที่คุณเรียกใช้การสำรองข้อมูล

ประการที่สองต้องแน่ใจว่าจะไม่เขียนอะไรถึง stdout เพราะมันจะทำให้ช่องทางการสื่อสารหยุดชะงัก

และประการที่สามอย่าลืมผ่านพารามิเตอร์ทั้งหมดที่คุณได้รับเพียงแค่ปรับเปลี่ยนตามความเหมาะสมสำหรับปลายทางที่ไม่ได้บีบอัดใหม่


-2

เขาอาจกำลังมองหาการบีบอัดการส่งข้อมูลผ่าน rsync ไม่ใช่การบีบอัดไฟล์ที่ปลายอีกด้าน

ตรวจสอบ: http://jimmyg.org/blog/2007/rsync-basics.html

พารามิเตอร์การบีบอัดจากหน้า man:

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

        --compress-level=NUM    explicitly set compression level

โดยค่าเริ่มต้น ssh ทำการบีบอัดของตัวเองในระดับหนึ่ง ฉันไม่ทราบว่า rsync ดีกว่า ssh พื้นเมือง หากไฟล์ส่วนใหญ่ของคุณถูกบีบอัดไว้แล้วในไฟล์ gzip อาจจะไม่มากที่กลไกการบีบอัดของ rsync สามารถทำเพื่อคุณได้ คุณสามารถบีบไฟล์ได้มากเท่านั้น


ไม่ฉันกำลังมองหาการบีบอัดไฟล์ที่ปลายข้างเดียวเท่านั้น rsyncing ไฟล์ที่บีบอัดแล้วไม่มีประสิทธิภาพดังนั้นฉันต้องการให้ส่วน rsync เกิดขึ้นกับข้อมูลที่ไม่บีบอัด
rjmunro
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.