W jaki sposób można przetransferować sparsefile za pomocą ssh, tak aby nie przesyłać całego pliku, a tylko tyle ile jest w nim zajęte?
W jaki sposób można przetransferować sparsefile za pomocą ssh, tak aby nie przesyłać całego pliku, a tylko tyle ile jest w nim zajęte?
Zasadniczo sprowadza się to do skompresowania przesyłanych danych. Są dwa rozwiązania:
1. Samodzielnie spakować plik, przesłać go, a na koniec rozpakować.
2. Użyć wbudowanej w SSH kompresji, przełącznik -C.
Użyłbym tutaj rsynca i opcji -S (--sparse).
Czyli np.
rsync -e ssh -v --progress -S plik1 serwerdocelowy:plik2
Do tego np kompresja (-z).
W ten sposób w docelowej lokalizacji zostanie uzyskany "sparse" file. Niestety - taka opcja jest niekompatybilna z --inprogress, co oznacza, że nawet przesyłając nieznacznie zmieniony plik - na docelowym dysku zostanie zajęte miejsce "od nowa" (czyli potrzebujesz 2x wielkość zajmowaną przez plik).