rsync в стислий архів файлу


11

Я беру резервні копії сервера з rsync, але ці резервні копії досить великі, і я хотів би їх стиснути. Чи є спосіб, щоб мати якусь обгортку навколо rsync, щоб гарнізувати файл у резервній копії, rsync зміни з живого файлу, а потім знову gzip файл, як тільки він буде скопійований?

Тобто , якщо вихідні файли на живі Foo , бар і Баз , резервне копіювання має foo.gz , bar.gz і baz.gz .

Для перезапуску: я хочу стислі файли на одному кінці та нестиснені файли на іншому кінці. Я не хочу стискати перед rsyncing, тому що навіть з --rsyncable, це робить rsync менш ефективною. Я знаю про варіант -z для rsync. У мене немає місця на резервній машині, щоб зберігати всі файли без стиску.

Відповіді:


10

Я не впевнений, що я розумію, що ви намагаєтеся зробити, але ви можете створити gzipped резервні копії на головному сервері, переконавшись, що вони легко піддаються виконанню і не перешкоджають декомпресії нічого в дорозі.

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, а також походить із загальноприйнятого патча, а не з основного коду gzip, тому номери версій недостатньо, щоб знати, чи є у вас.
mc0e


-1

Ви можете написати обгортку для rsync. Якщо ви "витягуєте" дані, нічого особливого робити не можна. Якщо ви хочете "натиснути" дані з оригінальних машин на сервер резервного копіювання, це більш делікатно, щоб вони працювали:

По-перше, ви повинні бути впевнені, що на обгортку викликається те саме ім'я, шлях та параметри, що й оригінальний 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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.