Pytanie: W jaki sposób osiągnąć cel z Pomysłu 3 aby utworzyć listę katalogów do wykonania kopii zapasowej, a może jest na to jeszcze lepsze rozwiązanie ?
OPIS
--------------------------------------------------------------------------------------------------
Zadanie: Wykonać backup danych w możliwie najszybszym czasie
Pomysł 1: Wykonać rsync dry-run i na tej podstawie określić które katalogi powinny zostać wybrane do wykonania kopi zapasowej aby nie robić rsync dla wszystkich katalogów.
- Czas wykonania 'rsync' dry-run (1h15m dla 4TB danych)
Pomysł 2: Z logów kopi zapasowej odczytać datę wykonania ostatniej kopi zapasowej, na tej podstawie znaleźć pliki zmodyfikowane od tamtego czasu i określić katalogi wymagające wykonania kopii zapasowej
- Czas wykonania 'find' (15m dla 4TB danych)
find $BASEDIR -mindepth 3 -type f -newermt "$LAST_BACKUP_DATE" -exec echo {} \; | cut -d'/' -f-4 | uniq > $DIR_LIST_TO_BACKUP
Pomysł 3: Z logów kopi zapasowej odczytać datę wykonania ostatniej kopi zapasowej, na tej podstawie znaleźć pliki zmodyfikowane od tamtego czasu i określić katalogi wymagające wykonania kopii zapasowej,
ale!!!
- założenie1: zazwyczaj katalogów jest mniej niż plików, zatem po znalezieniu 1 pliku zmodyfikowanego, dodać katalog nadrzędny do wykonania kopi zapasowej i przejść do przeszukiwania następnego katalogu
- 'ważne-dane' to katalog główny dla którego wykonywana jest kopia zapasowa
- katalogi dir0-dirX są dodawane do listy na której wykonany zostanie rsync
/tmp/ważne-dane
├── dir0
├── dir1
├── dir2
├── dir3
├── dir4
└── dirX
#bash #linux #skryptowanie #programowanie
OPIS
--------------------------------------------------------------------------------------------------
Zadanie: Wykonać backup danych w możliwie najszybszym czasie
Pomysł 1: Wykonać rsync dry-run i na tej podstawie określić które katalogi powinny zostać wybrane do wykonania kopi zapasowej aby nie robić rsync dla wszystkich katalogów.
- Czas wykonania 'rsync' dry-run (1h15m dla 4TB danych)
Pomysł 2: Z logów kopi zapasowej odczytać datę wykonania ostatniej kopi zapasowej, na tej podstawie znaleźć pliki zmodyfikowane od tamtego czasu i określić katalogi wymagające wykonania kopii zapasowej
- Czas wykonania 'find' (15m dla 4TB danych)
find $BASEDIR -mindepth 3 -type f -newermt "$LAST_BACKUP_DATE" -exec echo {} \; | cut -d'/' -f-4 | uniq > $DIR_LIST_TO_BACKUP
Pomysł 3: Z logów kopi zapasowej odczytać datę wykonania ostatniej kopi zapasowej, na tej podstawie znaleźć pliki zmodyfikowane od tamtego czasu i określić katalogi wymagające wykonania kopii zapasowej,
ale!!!
- założenie1: zazwyczaj katalogów jest mniej niż plików, zatem po znalezieniu 1 pliku zmodyfikowanego, dodać katalog nadrzędny do wykonania kopi zapasowej i przejść do przeszukiwania następnego katalogu
- 'ważne-dane' to katalog główny dla którego wykonywana jest kopia zapasowa
- katalogi dir0-dirX są dodawane do listy na której wykonany zostanie rsync
/tmp/ważne-dane
├── dir0
├── dir1
├── dir2
├── dir3
├── dir4
└── dirX
#bash #linux #skryptowanie #programowanie
wykopek_n
2021-07-19 17:34:54
+1
@ce029c47: zatrudnij auditd do audytowania modyfikowanych plików i będziesz miał w logu listę konkretnych plików, które zostały zmienione. Ewentualnie sobie awkiem czy cutem ze ścieżki wytnij katalog nadrzędny.
d.....e
2021-07-19 18:26:16
+1
- Czas wykonania 'rsync' dry-run (1h15m dla 4TB danych)
@ce029c47: ty chyba to robisz z flagą
-c i dlatego tak wolno?
Zrób rsync z hardlinkami to nie będzie kopiowało plików jeśli będzie mógł je znaleźć w folderze poprzedniej kopii np. https://www.cyberciti.biz/faq/linux-unix-apple-osx-bsd-rsync-copy-hard-links/
Ale - podobnie jak kryptografii, nie rób własnej metody backupu. Używaj sprawdzonych rozwiązań np. borg
ce029c47
[OP]
2021-07-19 17:52:02
+0
ce029c47
[OP]
2021-07-19 19:03:12
+0
ty chyba to robisz z flagą -c i dlatego tak wolno?
@diogene:
rsync dry-run wykonywany z flagami jak poniżej, jednak jest coś o czym jeszcze nie wspomniałem, serwerem jest RPi 3B+ do którego jest podłączony dysk USB z danymi(cały zaszyfrowany), drugi dysk na czas backupu jest podłączany też przez USB, także jest tu wąskie gardło, które wpływa na czas wykonania wszystkich operacji na dyskach.
# --dry-run Perform a trial run with no changes made
# --modify-window=5 Compare mod-times with reduced accuracy, because NTFS is used on encrypted partition.
# --stats Give some file-transfer stats.
# --times This tells rsync to transfer modification times along with the files and update them on the remote system.
# --itemize-changes Requests a simple itemized list of the changes that are being made to each file, including attribute changes.
# --no-whole-file Sync only modified parts of big files.
# -r This tells rsync to copy directories recursively.
# --delete This tells rsync to delete extraneous files from the receiving side (ones that aren't on the sending side), but only for the directories that are being synchronized.
# --size-only Skip files that match in size.
# --links Duplicate all symlinks.
rsync --dry-run --modify-window=5 --stats --times --itemize-changes --no-whole-file -r --delete --size-only --links "$DIR_SOURCE_SYNC" "$DIR_DEST_SYNC"
Może jakaś optymalizacja rsync jest jeszcze możliwa, musze spojrzeć na to jeszcze raz.
Ale - podobnie jak kryptografii, nie rób własnej metody backupu. Używaj sprawdzonych rozwiązań np. borg
@diogene: Staram się aby nie przekombinować, ma być najmożliwiej proste, z wykorzystaniem sprawdzonych, prostych narzędzi, ale też najmożliwiej automatyczne.
Nie znam borg, sprawdze temat.
ce029c47
[OP]
2021-07-19 19:11:43
+0
@MyNameIsJefff: To w ramch dbania o własne dane w przypadku ich utraty a zarazem aby mieć je zawsze szybko dostępne "w kieszeni" w przypadku kiepskiego dostępu do internetu.