Korzystam z rsync do tworzenia kopii zapasowych repozytorium, które zawiera wiele plików GZ, w tym wiele nowych każdego dnia. Kopia zapasowa rsync przebiega wolniej niż powinna, ponieważ te pliki gz nie są budowane z opcją --rsyncable gzip (co czyni pliki gz bardziej „przyjaznymi dla rsync” bez znacznego zwiększenia ich rozmiaru lub wpływu na ich kompatybilność). I nie mogę rozwiązać problemu w czasie tworzenia, ponieważ pliki są generowane przez skrypt Pythona (rdiff-backup), który używa modułu gzip pythona, a to nie obsługuje odpowiednika - gsip - syncable.
Więc przed uruchomieniem rsync mogę zidentyfikować nowe pliki gz w danych źródłowych (tj. Nowe od ostatniego uruchomienia rsync). Teraz chcę ponownie „zgzipować” te pliki, aby były one zgzipowane w formacie rsyncable. Następnie mogę uruchomić rsync ze zoptymalizowanego źródła.
Myślę, że oznacza to uruchomienie każdego pliku przez gunzip, a następnie gzip --rsyncable, ale nie jestem zbyt pewien, jak to zrobić w sposób, który nie ryzykuje utraty danych lub metadanych. Sugestie otrzymane z wdzięcznością.
--rsyncable
powinien mieć znaczenie, jeśli pliki zostaną zmienione między uruchomieniami irsync
spróbują wysłać zmiany. Nowe pliki nie dbają o to, czy można je synchronizować, czy nie, ponieważ irsync
tak muszą przesyłać wszystkie dane. Czy pliki są zmieniane między uruchomieniami rsync?--rsyncable
.-a
flagi. Ponadto moja wersja gzip nie ma--rsyncable
flagi, ale zawiera program o nazwieznew
, który prawdopodobnie mógłby zostać użyty do tego, czego potrzebujesz.--rsyncable
nie pomogłoby. Miałem nadzieję na linię kodu lub krótki skrypt, który bezpiecznie rozpakowałby archiwum gz i ponownie go spakował--rsyncable
. Ale teraz jest to dla mnie tylko pytanie akademickie.Odpowiedzi:
źródło
gunzip | gzip
tracisz nieskompresowaną nazwę i czas zapisane w pliku gz (i widziane zgzip -vNl
)