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:
set dt=%DATE%
set dt = %dt:-=-%
mysqldump --user root --password=haslo --all-databases > D:\backup\mysql_FULL_BACKUP_%dt:-=-%.sql
"C:\Program Files (x86)\Microsoft SQL Server\90\Tools\Binn\SQLCMD.EXE" -S localhost\SQLEXPRESS -E -i D:\backup\mskopia.sql
set vbs=temp.vbs
for /f %%a in ('cscript /nologo %vbs%') do set kasuj=%%a
del D:\backup\mysql_FULL_BACKUP_%kasuj%.sql
del D:\backup\mssql_FULL_BACKUP_%kasuj%.bak
del %vbs%
plik mskopia.sql
DECLARE @FileName varchar(100), @BackupName varchar(100)
SET @FileName = N'D:\backup\mssql_FULL_BACKUP_' +
Replace
(Convert
(varchar
(10
),getdate(),120),'-','-') + '.bak'
SET @BackupName = N'Test-Full Database Backup from ' +
-- skrypt uruchamiany codziennie, unikalna nazwa pliku
PRINT @FileName
+ char
(10) + @BackupName
+ char
(10) + REPLICATE
('-',50)
BACKUP DATABASE baza TO DISK = @FileName
WITH FORMAT,
NAME = @BackupName
2. jako że kopie chce robić z windowsa niezbędna będzie instalacja cwRsyncServer
przykładowa konfiguracja pliku rsyncd.conf
max connections = 10
use chroot = false
strict modes = false
hosts allow = *
lock file = /cygdrive/c/rsyncd.lock
log file = /cygdrive/c/rsyncd.log
[dysk_c]
path = /cygdrive/c
read only = true
transfer logging = yes
uid = 0
gid = 0
[dysk_d]
path = /cygdrive/d
read only = true
transfer logging = yes
uid = 0
gid = 0
[sql]
path = /cygdrive/d/backup
read only = true
transfer logging = yes
uid = 0
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)
#!/bin/sh
# montowanie dysku
sudo mount -t ntfs-3g /dev/$(ls /dev | grep "[sh]d[a-z][1-9]") /media/backup
# Katalog Docelowy (bez ostatniego /)
BACKUP_DIR=/media/backup
# Katalog źródłowy
SOURCE_DIR=rsync://192.168.2.10
# Ilość przechowywanych kopii (1 kopia dziennie)
NUM_BACKUP=10
# Jeżeli nie ma katalogu dla kopii to go tworzymy
if [ ! -d $BACKUP_DIR ]
then
fi
# Wywalamy najstarszy backup
for i in $
(find
"$BACKUP_DIR" -maxdepth 1
-type d
| sort -Vr
); do
if [ "$i" != "$BACKUP_DIR" ]
then
if [ $COUNT -gt $NUM_BACKUP ]
then
sudo rm -rf "$i"
fi
fi
done
# Pobieramy ostatni katalog backupu
i=1
while [ $i -le 30 ];
do
#statements
LAST_BACKUP
=$
(date -I
-d
"$i day ago")
if [ -d $BACKUP_DIR/$LAST_BACKUP ]
then
echo "Found newst backup: $LAST_BACKUP" break
fi
i=`expr $i + 1`
done
# echo "$LAST_BACKUP"
CURRENT_BACKUP
=$
(date -I
)
# Jeżeli nie ma katalogu dla kopii to go tworzymy
if [ ! -d $BACKUP_DIR/$CURRENT_BACKUP ]
then
sudo
mkdir -p
$BACKUP_DIR/$CURRENT_BACKUP/c
sudo
mkdir -p
$BACKUP_DIR/$CURRENT_BACKUP/d
sudo
mkdir -p
$BACKUP_DIR/$CURRENT_BACKUP/sql
fi
#wykluczenia
IGNORE_DIR=' --exclude=/$Recycle.Bin'
IGNORE_DIR=$IGNORE_DIR' --exclude=/System?Volume?Information'
IGNORE_DIR=$IGNORE_DIR' --exclude=/Windows'
IGNORE_DIR=$IGNORE_DIR' --exclude=pagefile.sys'
sudo rsync
-ah
$IGNORE_DIR --progress
--ignore
-errors
--backup
-dir=$BACKUP_DIR/$LAST_BACKUP/sql
$SOURCE_DIR/sql
$BACKUP_DIR/$CURRENT_BACKUP/sql
sudo rsync
-ah
$IGNORE_DIR --progress
--ignore
-errors
--backup
-dir=$BACKUP_DIR/$LAST_BACKUP/d
$SOURCE_DIR/dysk_d
$BACKUP_DIR/$CURRENT_BACKUP/d
sudo rsync
-ah
$IGNORE_DIR --progress
--ignore
-errors
--backup
-dir=$BACKUP_DIR/$LAST_BACKUP/c
$SOURCE_DIR/dysk_c
$BACKUP_DIR/$CURRENT_BACKUP/c
sudo umount /media/backup
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)