Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> kopia plików przez rdiff-backup
!*!
post 24.11.2016, 14:43:24
Post #1





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

Ostrzeżenie: (0%)
-----


Rsync miał opcje -delete która kasowała pliki na serwerze zdalnym jeśli nie było ich w źródle. Czy rdiff-backup ma podobną właściwość? Zauważyłem pewien zgrzyt i ilość plików się nie zgadza, jest ich więcej na serwerze zapasowym niż w źródle i zastanawiam się jak ugryźć temat. Robienie nowej rewizji nie za bardzo mi się uśmiecha...


--------------------
Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta).
Go to the top of the page
+Quote Post
Pyton_000
post 24.11.2016, 21:11:06
Post #2





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


A może powiedz co chcesz osiągnąć? I czemu nie rsync?
Go to the top of the page
+Quote Post
!*!
post 25.11.2016, 09:51:00
Post #3





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

Ostrzeżenie: (0%)
-----


Rsync nie robi kopii przyrostowych. A to jest potrzebne przy wysylaniu plikow ktore sa generowane z calego dnia, a odzyskanie musi byc mozliwe np z konkretnej godziny. Ilość plikow jest duża, 2TB.


--------------------
Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta).
Go to the top of the page
+Quote Post
Pyton_000
post 25.11.2016, 10:31:23
Post #4





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


A może to wink.gif https://blog.piotrows.pl/rsync-przyrostowy-backup-v-1-1
Tylko jeśli robisz backup godzinny to musiałbyś sobie lekko zmodyfikować skrypt bo on robi backupy dzienne.
Go to the top of the page
+Quote Post
!*!
post 25.11.2016, 11:00:01
Post #5





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

Ostrzeżenie: (0%)
-----


To się nie sprawdzi i nie nazwałbym tego backupem przyrostowym, nie jeśli bierzemy dużą ilość plików. Twój skrypt tworzy i wysyła zawsze pełną kopię, a nie różnicę smile.gif


--------------------
Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta).
Go to the top of the page
+Quote Post
Pyton_000
post 25.11.2016, 11:23:31
Post #6





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


to źle patrzyłeś wink.gif Skrypt pobiera tylko te pliki które sie zmieniły, a te które nie zostają podlinkowane.
Go to the top of the page
+Quote Post
!*!
post 25.11.2016, 11:45:12
Post #7





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

Ostrzeżenie: (0%)
-----


Tak zgadza się, ale to działa w obrębie jednego dnia. Wyślij pliki z folderu A do folderu B. Dostaniesz folder z datą 2016-11-25, teraz jednak, dnia kolejnego całość zostanie wysłana ponownie do folderu 2016-11-26, a nie tylko to co zostało zmienione i to jest ta różnica.

edycja:

Przyrost jest tutaj złudny. Raz że rsync nie ma takiej opcji, a dwa, zmiana nazwy folderu robi zawszę pełną kopię i sprawdza różnicę (odpal to z --progress). Mając 2TB danych i kopia musi być co godzinę, strzeliłbym sobie tym w kolano (samo wysyłanie pełnej kopii zajmuje więcej niż godzina), chyba że masz pożyczyć dysk taki ze 10 YB smile.gif

Ten post edytował !*! 25.11.2016, 12:37:42


--------------------
Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta).
Go to the top of the page
+Quote Post
zegarek84
post 25.11.2016, 20:47:34
Post #8





Grupa: Zarejestrowani
Postów: 1 332
Pomógł: 294
Dołączył: 12.10.2008
Skąd: Olkusz

Ostrzeżenie: (0%)
-----


o ile masz możliwość może po testuj lokalnie z linux'owym systemem plików:
2014/03/22 Btrfs Tips: Doing Fast Incremental Backups With Btrfs Send and Receive
Incremental Backup


--------------------
Jeśli twoja ręka rusza do przodu powstrzymaj swój gniew; gdy wyprzedza cię twój gniew - wycofaj rękę.

Go to the top of the page
+Quote Post
Pyton_000
post 26.11.2016, 10:00:36
Post #9





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


Tak każdego dnia masz "pełny backup" i jest to przyrostowa wersja. Fakt że w prawdziwej przyrostowej wersji masz tylko zmienione pliki a tutaj masz całą zawartość.
Ale zobacz benefity tego rozwiązania.

Tworząc normalne kopie przyrostowe aby odtworzyć backum musisz wgrać pełną kopię a następnie wszystkie incrementale. Zajmuje Ci to czas.
W moim rozwiązaniu po prostu wgrywasz kopię z danego dnia/godziny i koniec. Nic więcej nie musisz robić.

Możesz mi wyjaśnić dlaczego mój skrypt Ci się nie sprawdzi? Bo uważam że jednak się sprawdzi i to znakomicie. Bo o ile pliki nie są zmienione to ich po prostu nie pobiera, a dociąga tylko nowe. Dodatkowo robiony jest hard-link na nie zmienionych plikach co za tym idzie oszczędzasz miejsce.

Defacto różnica między incrementalem a moim skryptem jest taka że tam dostajesz Tylko zmienione pliki, a u mnie masz pełną kopię.
Go to the top of the page
+Quote Post
!*!
post 26.11.2016, 14:12:48
Post #10





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

Ostrzeżenie: (0%)
-----


@Pyton_000 - nie wykonujesz tym skryptem kopii przyrostowej, tylko różnicową. W jakim celu mam wysyłać każdego dnia, co godzinę całą kopię? To jest technicznie nie realne, jak również czasowo. W kopii przyrostowej pełna kopia zawsze jest na miejscu (od początku, podobnie jak w różnicowej), a pliki są dogrywane i masz wykaz różnych wersji. Wybierasz ostatnią lub z określonego dnia i czekasz aż się całość sama ogarnie, przecież z wykasowaniem listy różnic, nie kasujesz plików jakie zostały wgrane, one nadal tam są, tracisz tylko możliwość odtworzenia z danego okresu, ale "now" odtworzy i tak 1:1 od początku

Cytat
Możesz mi wyjaśnić dlaczego mój skrypt Ci się nie sprawdzi? Bo uważam że jednak się sprawdzi i to znakomicie. Bo o ile pliki nie są zmienione to ich po prostu nie pobiera, a dociąga tylko nowe. Dodatkowo robiony jest hard-link na nie zmienionych plikach co za tym idzie oszczędzasz miejsce.

Sam sobie odpowiedziałeś:
Cytat
Defacto różnica między incrementalem a moim skryptem jest taka że tam dostajesz Tylko zmienione pliki, a u mnie masz pełną kopię.


Przemyśl to jeszcze raz. Robisz kopię plików z katalogu A, który ma 2TB danych, folder z kopią nazywa się 2016-11-26, co godzinę dogrywane są nowe pliki które powstały w folderze A. I tak się dzieje przez dajmy na to tydzień. Każdy dzień zrobił pełną kopię katalogu A, co daje nam 14TB danych. Już widzisz, że to nie ma sensu? Gdzie przy kopii przyrostowej z folderu A miałbym dorzucone tylko np 700MB dziennie.



--------------------
Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta).
Go to the top of the page
+Quote Post
Pyton_000
post 26.11.2016, 16:11:00
Post #11





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


No przecież Ci tłumaczę że nie będziesz miał 14TB danych, bo hard-linki załatwiają ten problem. One nie zajmują miejsca na dysku (no może poza nazwą). Przykład:

Kod
# lpiotrowski /tmp/test [15:45:04]
→ dd if=/dev/zero of=regular count=10240 bs=10240
10240+0 przeczytanych recordów
10240+0 zapisanych recordów
skopiowane 104857600 bajtów (105 MB), 0,0892433 s, 1,2 GB/s

# lpiotrowski /tmp/test [15:45:17]
→ ls -las
razem 102436
     4 drwxrwxr-x  2 lpiotrowski lpiotrowski      4096 lis 26 15:45 .
    32 drwxrwxrwt 14 root        root            32768 lis 26 15:42 ..
102400 -rw-rw-r--  1 lpiotrowski lpiotrowski 104857600 lis 26 15:45 regular

# lpiotrowski /tmp/test [15:45:24]
→ du -ksh .                                      
101M    .

# lpiotrowski /tmp/test [15:45:30]
→ ln regular hard

# lpiotrowski /tmp/test [15:45:36]
→ ls -las        
razem 204844
     4 drwxrwxr-x  2 lpiotrowski lpiotrowski      4096 lis 26 15:45 .
    32 drwxrwxrwt 14 root        root            32768 lis 26 15:42 ..
102404 -rw-rw-r--  2 lpiotrowski lpiotrowski 104857600 lis 26 15:45 hard
102404 -rw-rw-r--  2 lpiotrowski lpiotrowski 104857600 lis 26 15:45 regular

# lpiotrowski /tmp/test [15:45:38]
→ du -ksh .      
101M    .

Jak widzisz Hard-linki nie zajmują na dysku miejsca. I to jest właśnie magia tego. Masz codzienne backupy w pełni, ale zajmują miejsce tak jakbyś pobierał tylko nowe pliki.

Kolejny przykład z moich kopii z użyciem tego skryptu:
Kod
→ sudo du -chs 2016-04-08 2016-04-09
8,0G    2016-04-08
831M    2016-04-09


Jak widzisz, realnie zostało pobrane ~830MB (część tego to jest miejsce zarezerowane na nazwy plików).

Przetestuj sobie mój skrypt 2 dni i wtedy wyraź opinię wink.gif
Go to the top of the page
+Quote Post
!*!
post 26.11.2016, 16:51:46
Post #12





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

Ostrzeżenie: (0%)
-----


Przykład działania Twojego skryptu:

Dzień 1:
Cytat
./kopia.sh
sending incremental file list
created directory ./b/2016-11-26
a/
a/plik1
8 100% 0.00kB/s 0:00:00 (xfr#1, to-chk=2/4)
a/plik2
20 100% 19.53kB/s 0:00:00 (xfr#2, to-chk=1/4)
a/plik3
70 100% 68.36kB/s 0:00:00 (xfr#3, to-chk=0/4)


Dzień 2:

Cytat
./kopia.sh
Found newst backup: 2016-11-26
sending incremental file list
created directory ./b/2016-11-27
a/
a/plik1
8 100% 0.00kB/s 0:00:00 (xfr#1, to-chk=2/4)
a/plik2
20 100% 19.53kB/s 0:00:00 (xfr#2, to-chk=1/4)
a/plik3
70 100% 68.36kB/s 0:00:00 (xfr#3, to-chk=0/4)


Dzień 3:

Cytat
./kopia.sh
Found newst backup: 2016-11-27
sending incremental file list
created directory ./b/2016-11-28
a/
a/plik1
8 100% 0.00kB/s 0:00:00 (xfr#1, to-chk=2/4)
a/plik2
20 100% 19.53kB/s 0:00:00 (xfr#2, to-chk=1/4)
a/plik3
70 100% 68.36kB/s 0:00:00 (xfr#3, to-chk=0/4)


Teraz przechodzimy do katalogu B gdzie leżą kopie z tych dni:

Cytat
du -h *
16K 2016-11-26/a
20K 2016-11-26
16K 2016-11-27/a
20K 2016-11-27
16K 2016-11-28/a
20K 2016-11-28


Cytat
-a, --archive archive mode; same as -rlptgoD (no -H)
-H, --hard-links preserve hard links


To wyjaśnij mi skąd te dane i czemu są wysyłane przy każdym uruchomieniu, przecież istnieją i nie są zmieniane wink.gif


--------------------
Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta).
Go to the top of the page
+Quote Post
Pyton_000
post 26.11.2016, 17:25:16
Post #13





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


Coś tu ściemniasz....
Kod
root@lpiotrowski:/tmp/test# ./kopia.sh
sudo rsync -av --progress --exclude=/dev --exclude=/proc --exclude=/tmp --exclude=/sys --link-dest=/tmp/test/2016-11-26 root@vpstech.ovh:/test/ /tmp/test/2016-11-27
receiving incremental file list
created directory /tmp/test/2016-11-27
./
plik4
    104,857,600 100%    3.15MB/s    0:00:31 (xfr#1, to-chk=0/5)

sent 87 bytes  received 104,883,377 bytes  3,227,183.51 bytes/sec
total size is 104,857,643  speedup is 1.00
root@lpiotrowski:/tmp/test# ./kopia.sh
sudo rsync -av --progress --exclude=/dev --exclude=/proc --exclude=/tmp --exclude=/sys --link-dest=/tmp/test/2016-11-27 root@vpstech.ovh:/test/ /tmp/test/2016-11-28
receiving incremental file list
created directory /tmp/test/2016-11-28

sent 61 bytes  received 135 bytes  392.00 bytes/sec
total size is 104,857,643  speedup is 534,987.97
root@lpiotrowski:/tmp/test#


A w "BACKUP_DIR" podałeś ścieżkę względną czy bezwzględną? Bo ma być bezwzględna.
Go to the top of the page
+Quote Post
!*!
post 26.11.2016, 18:33:37
Post #14





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

Ostrzeżenie: (0%)
-----


Prawda, ścieżka miała znaczenie, jednak coś mi w tym nie pasuje, muszę to przetestować bo coś tu z tym jest nie tak tongue.gif


--------------------
Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta).
Go to the top of the page
+Quote Post
Pyton_000
post 26.11.2016, 18:39:32
Post #15





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


Hahaha No tak bo byś musiał mi przyznać rację tongue.gif Dobra spoko, przetestuj i powiedz jak działa.
Go to the top of the page
+Quote Post
!*!
post 1.12.2016, 12:30:06
Post #16





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

Ostrzeżenie: (0%)
-----


Przyznaje Ci racje, że winna była ścieżka i skrypt działa robiąc odpowiednią kopię, jednak... odczekajmy 5min...

---5 minut później---

Cholera miałem nadzieję że forum się zawali po przyznaniu Ci racji... wink.gif

Wracając jednak do tematu, w moim przypadku działa to z błędami podobnie jak rdiff i nie mam pomysłu jak to rozwiązać. Po kilku dniach testów pojawiły się w robionej kopii ze źródła dodatkowe pliki, logi niczego nie wskazują, jednak gdy odpaliłem rdiff ręcznie wyskakuje informacja o
Cytat
UpdateError <plik> File changed from regular file before signature
z tego co czytałem pliki z takim błędem są "puste" co średnio wpływa na sens robienia kopii wink.gif


--------------------
Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta).
Go to the top of the page
+Quote Post
Pyton_000
post 1.12.2016, 14:48:45
Post #17





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


Co to znaczy pliki nie wskazujące niczego?
Go to the top of the page
+Quote Post
!*!
post 1.12.2016, 16:07:59
Post #18





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

Ostrzeżenie: (0%)
-----


Nie ma żadnej informacji w logach o błędach w przesyłaniu czy złych sumach kontrolnych itp


--------------------
Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta).
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 28.03.2024 - 19:01