Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Backup danych z windowsa, co i jak
Forum PHP.pl > Forum > Serwery WWW
adi456
Witam

Potrzebuje bezpieczne kopie zapasowe serwera który jest postawiony na windowsie

na chwile obecną jest tak:
- serwer RAID 1 (lustrzany)
- dodatkowo cotygodniowa kopia na inny komputer w sieci lokalnej (też na windowsie)

głównie chciałbym się uchronić przed gościami którzy szyfrują dyski i chcą kasę za odszyfrowanie, wydaje mi się że obecne kopie to za mało.

więc chciałbym przerobić tak:
- serwer RAID 1 (lustrzany) -- to by zostało
- dodatkowo cotygodniowa kopia na inny komputer w sieci lokalnej -- tu chciałbym zrobić inaczej, kupić chociaż by raspberry postawić np freeBSD zablokować go całkowicie na zewnętrzny dostęp czy to z internetu czy z sieci lokalnej, cały serwer (ten z windowsa) udostępnić przez FTP czy Sambe i raspberry łączył by się codziennie i robił kopie zapasową, na koniec zaprosić firme zewnętrzną żeby sprawdziła czy wszystko zrobiłem ok i czy jest to bezpieczne

co o tym myślicie? dodam że kopia to kwestia 300-400GB, internet 20/1Mb, może lepiej iść w kierunku firm które oferują kopie w chmurach? może jakieś inne rozwiązania?
Pyton_000
postaw sobie gdzieś linuksa i rób przyrostowe w rsync.
mlawnik
Najlepszym pomysłem na zabezpieczenie przed cryptolockerem jest osobny serwer na linuxie, któy robi przez sieć (rsync/ftp/samba/cokolwiek) kopie serwera (najlepiej z tydzień wstecz, aczkolwiek po ataku cryptolockerem i tak się zorientujesz).
Ważne jest tylko aby to ten zewnętrzny serwer do backupu łączył się z serwerem www a nie na odwrót, bo wtedy cryptolocker może przeskoczyć.
Ja np. na NASie do którego są robione backupy z windowsowych maszyn mam cp do partycji do której dostęp ma tylko Linux (nie jest zmapowana jako udział w sieci)
adi456
rsync z przyrostową kopią wolałbym uniknąć, ponieważ gdy na serwerze będzie wirus i wywali wszystko to rsync z kopi też wszystko wywali dobrze myślę?
macie może jakiś skrypt który będzie robił kopie przez sambę lub ftp? "Ważne jest tylko aby to ten zewnętrzny serwer do backupu łączył się z serwerem www a nie na odwrót"
linux bezpieczniejszy od bsd? (dobrze znam tylko debiana i freebsd czyli wybrać debiana?)
dodam że raczej wole iść w stronę codziennych kopi lustrzanych a nie przyrostowych (kupić parę terabajtów to nie problem)
Pyton_000
Nie, przyrostowy skopiuje tylko to co się zmieniło. Sam ustalasz ilosć trzymanych kopii.

https://blog.piotrows.pl/rsync-przyrostowy-backup-v-1-1/

Uzywam i działa ok. mam X bakupów. Najstarsze są wywalane.
adi456
Witam ponownie, wracam do tematu.
Ustawiłem kopie przez rsync na raspberry no i problem jest, rsync nie kopiuje zablokowanych plików, głównie chodzi mi o baze MSSQL, co z tym można zrobić? Trzeba wcześniej wykonać dump bazy czy jakaś inna metoda?
Pyton_000
Wydaje mi się że to nie jest wina rsync a systemu plików. W takim wypadku najlepiej byłoby zrobić tak jak mówisz czyli dump baz do plików i te dopiero kopiować. Jest to najbezpieczniejsze rozwiązanie.
adi456
ok wszystko gra, podstawiam moje rozwiązanie jakby ktoś potrzebował

1. na początek ustawiłem harmonogramie windowsa skrypt do dumpa mssql i mysql (kasuje kopie sprzed 3 dni)

plik kopia.bat:
  1. set dt=%DATE%
  2. set dt = %dt:-=-%
  3.  
  4. cd C:\xampp\mysql\bin
  5. mysqldump --user root --password=haslo --all-databases > D:\backup\mysql_FULL_BACKUP_%dt:-=-%.sql
  6. "C:\Program Files (x86)\Microsoft SQL Server\90\Tools\Binn\SQLCMD.EXE" -S localhost\SQLEXPRESS -E -i D:\backup\mskopia.sql
  7.  
  8. set vbs=temp.vbs
  9. echo Wscript.Echo (date -3)>>%vbs%
  10. for /f %%a in ('cscript /nologo %vbs%') do set kasuj=%%a
  11. del D:\backup\mysql_FULL_BACKUP_%kasuj%.sql
  12. del D:\backup\mssql_FULL_BACKUP_%kasuj%.bak
  13. del %vbs%


plik mskopia.sql
  1. DECLARE @FileName varchar(100), @BackupName varchar(100)
  2.  
  3. SET @FileName = N'D:\backup\mssql_FULL_BACKUP_' +
  4. Replace(Convert(varchar(10),getdate(),120),'-','-') + '.bak'
  5.  
  6. SET @BackupName = N'Test-Full Database Backup from ' +
  7. Convert(varchar(10),getdate(),120)
  8.  
  9. -- skrypt uruchamiany codziennie, unikalna nazwa pliku
  10. PRINT @FileName + char(10) + @BackupName + char(10) + REPLICATE('-',50)
  11.  
  12. BACKUP DATABASE baza TO DISK = @FileName
  13. WITH FORMAT,
  14. NAME = @BackupName


2. jako że kopie chce robić z windowsa niezbędna będzie instalacja cwRsyncServer

przykładowa konfiguracja pliku rsyncd.conf

  1. max connections = 10
  2. use chroot = false
  3. strict modes = false
  4. hosts allow = *
  5.  
  6. lock file = /cygdrive/c/rsyncd.lock
  7. log file = /cygdrive/c/rsyncd.log
  8.  
  9. [dysk_c]
  10. path = /cygdrive/c
  11. read only = true
  12. transfer logging = yes
  13. uid = 0
  14. gid = 0
  15.  
  16. [dysk_d]
  17. path = /cygdrive/d
  18. read only = true
  19. transfer logging = yes
  20. uid = 0
  21. gid = 0
  22.  
  23. [sql]
  24. path = /cygdrive/d/backup
  25. read only = true
  26. transfer logging = yes
  27. uid = 0
  28. gid = 0


3. No i zostaje skrypt do kopi ustawiony w moim przypadku na rasberry (autorstwa Pyton_000, dodałem tylko montowanie dysku NTFS podpiętego do dowolnego USB)

  1. #!/bin/sh
  2.  
  3.  
  4. # montowanie dysku
  5. sudo mount -t ntfs-3g /dev/$(ls /dev | grep "[sh]d[a-z][1-9]") /media/backup
  6.  
  7. # Katalog Docelowy (bez ostatniego /)
  8. BACKUP_DIR=/media/backup
  9.  
  10. # Katalog źródłowy
  11. SOURCE_DIR=rsync://192.168.2.10
  12.  
  13. # Ilość przechowywanych kopii (1 kopia dziennie)
  14. NUM_BACKUP=10
  15.  
  16.  
  17. # Jeżeli nie ma katalogu dla kopii to go tworzymy
  18. if [ ! -d $BACKUP_DIR ]
  19. then
  20. mkdir -p $BACKUP_DIR
  21. fi
  22.  
  23. # Wywalamy najstarszy backup
  24. for i in $(find "$BACKUP_DIR" -maxdepth 1 -type d | sort -Vr);
  25. do
  26. if [ "$i" != "$BACKUP_DIR" ]
  27. then
  28. COUNT=`expr $COUNT + 1`
  29.  
  30. if [ $COUNT -gt $NUM_BACKUP ]
  31. then
  32. echo "Deleting: $i"
  33. sudo rm -rf "$i"
  34. fi
  35. fi
  36. done
  37.  
  38. # Pobieramy ostatni katalog backupu
  39. i=1
  40. while [ $i -le 30 ];
  41. do
  42. #statements
  43. LAST_BACKUP=$(date -I -d "$i day ago")
  44.  
  45. if [ -d $BACKUP_DIR/$LAST_BACKUP ]
  46. then
  47. echo "Found newst backup: $LAST_BACKUP"
  48. break
  49. fi
  50. i=`expr $i + 1`
  51. done
  52.  
  53. # echo "$LAST_BACKUP"
  54.  
  55. CURRENT_BACKUP=$(date -I)
  56.  
  57. # Jeżeli nie ma katalogu dla kopii to go tworzymy
  58. if [ ! -d $BACKUP_DIR/$CURRENT_BACKUP ]
  59. then
  60. sudo mkdir -p $BACKUP_DIR/$CURRENT_BACKUP/c
  61. sudo mkdir -p $BACKUP_DIR/$CURRENT_BACKUP/d
  62. sudo mkdir -p $BACKUP_DIR/$CURRENT_BACKUP/sql
  63. fi
  64.  
  65. #wykluczenia
  66. IGNORE_DIR=' --exclude=/$Recycle.Bin'
  67. IGNORE_DIR=$IGNORE_DIR' --exclude=/System?Volume?Information'
  68. IGNORE_DIR=$IGNORE_DIR' --exclude=/Windows'
  69. IGNORE_DIR=$IGNORE_DIR' --exclude=pagefile.sys'
  70.  
  71.  
  72. sudo rsync -ah $IGNORE_DIR --progress --ignore-errors --backup-dir=$BACKUP_DIR/$LAST_BACKUP/sql $SOURCE_DIR/sql $BACKUP_DIR/$CURRENT_BACKUP/sql
  73. sudo rsync -ah $IGNORE_DIR --progress --ignore-errors --backup-dir=$BACKUP_DIR/$LAST_BACKUP/d $SOURCE_DIR/dysk_d $BACKUP_DIR/$CURRENT_BACKUP/d
  74. sudo rsync -ah $IGNORE_DIR --progress --ignore-errors --backup-dir=$BACKUP_DIR/$LAST_BACKUP/c $SOURCE_DIR/dysk_c $BACKUP_DIR/$CURRENT_BACKUP/c
  75. sudo umount /media/backup
  76.  


i gotowe, oczywiście poprawki kodu trzeba będzie zrobić ale na chwile obecną rozwiązanie skuteczne (najistotniejsze to żeby rsync odpalał się dopiero po ukończeniu dumpa chwilowo cron rsync odpala się 4 godziny po dumpie)
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.