Difference between revisions of "Versions backup med rsync"

From HoerupWiki
Jump to: navigation, search
(Resultatet)
(Netgear ReadyNas duo)
 
(37 intermediate revisions by 2 users not shown)
Line 1: Line 1:
''af Tommy Bjerg d. 20. feb. 2013''
+
''- en del af [[Tommys Backup Projekt]]''
  
Lavet i forbindelse med backup projketet : [[SFTP chroot + rsync]]
 
 
==Ide og koncept==
 
==Ide og koncept==
 
Jeg ønsker at tage backup af min mappe med Billeder på min NAS, jeg ønsker at kunne gå tilbage i tiden i tilfælde af at jeg overskriver eller ændre på et billede. Derfor skal den daglige backup have en mappe med dato og klokkeslet.
 
Jeg ønsker at tage backup af min mappe med Billeder på min NAS, jeg ønsker at kunne gå tilbage i tiden i tilfælde af at jeg overskriver eller ændre på et billede. Derfor skal den daglige backup have en mappe med dato og klokkeslet.
Line 14: Line 13:
  
 
==Forberedelse==
 
==Forberedelse==
For at det virker kræver det selvfølgelig at man har kopieret nøglen fra '''/root/.ssh/ssh_host_rsa_key.pub''' op i '''authorized_keys'''.
 
 
 
Start med at opret en tom current mappe i backup-folderen på rsync serveren, på den måde vil den første backup antage at alle filer mangler og lave en fuld backup, slette den tomme current mappe og linke ny current til ny backup. Og vi er klar til næste run.
 
Start med at opret en tom current mappe i backup-folderen på rsync serveren, på den måde vil den første backup antage at alle filer mangler og lave en fuld backup, slette den tomme current mappe og linke ny current til ny backup. Og vi er klar til næste run.
  
 
Første kørsel bør du køre manuelt da du skal godkende server key og den kan godt tage rigtig lang tid.
 
Første kørsel bør du køre manuelt da du skal godkende server key og den kan godt tage rigtig lang tid.
 +
 +
Hvis du ikke har lavet RSA keys, så er en guide her : http://www.cyberciti.biz/faq/linux-generating-rsa-keys/
 +
Men i store træk :
 +
ssh-keygen -t rsa
  
 
==Backup script==
 
==Backup script==
''/share/MD0_DATA/backup.sh'':
+
''/share/MD0_DATA/backup.sh'' (Qnap placering):
 
  #!/bin/sh
 
  #!/bin/sh
 
  DATE=`date "+%Y-%m-%d_%H-%M-%S"`
 
  DATE=`date "+%Y-%m-%d_%H-%M-%S"`
 
   
 
   
  CURRENT=/files/AmstrupNAS/Billeder/current
+
  CURRENT=/files/Billeder/current
  FOLDER=/files/AmstrupNAS/Billeder/$DATE
+
  FOLDER=/files/Billeder/$DATE
 +
 +
SOURCE=/share/Public/Billeder/
 +
 +
USER=user01
 +
SERVER=rsync.todic.net
 +
PORT=522
 +
 +
# Kbytes/sec
 +
BWLIMIT=500
 
   
 
   
  rsync -azP --bwlimit 60 --link-dest=$CURRENT /share/Public/Billeder/ user01@rsync.todic.net:$FOLDER
+
# ============================================================================================
  ssh user01@rsync.todic.net "rm -r $CURRENT && ln -s $FOLDER $CURRENT"
+
ssh -p $PORT $USER@$SERVER "mkdir --parents $FOLDER"
 +
  rsync -azP --bwlimit $BWLIMIT -e "ssh -p $PORT" --link-dest=$CURRENT $SOURCE $USER@$SERVER:$FOLDER
 +
  ssh -p $PORT $USER@$SERVER "rm -r $CURRENT"
 +
ssh -p $PORT $USER@$SERVER "ln -s $FOLDER $CURRENT"
 +
 
 +
 
  
 
Jeg har valgt at tage klokkeslet med også, så kan jeg kalde scriptet hver time eller ved særlige lejligheder hvis det skulle blive aktuelt.
 
Jeg har valgt at tage klokkeslet med også, så kan jeg kalde scriptet hver time eller ved særlige lejligheder hvis det skulle blive aktuelt.
Line 37: Line 52:
 
==Cronjobs==
 
==Cronjobs==
 
===QNAP===
 
===QNAP===
Normalt en no-brainer på linux systemer, men Qnap er lige lidt anderledes:
+
Det kan være en god ide at installere OPT-ware, og så installere nogle tools via ipkg, fx. nano, less eller lign.
 +
 
 +
'''Authorized keys:'''
 +
 
 +
For at det virker kræver det selvfølgelig at man har kopieret nøglen fra '''/root/.ssh/ssh_host_rsa_key.pub''' op i '''authorized_keys'''.
  
 
'''crontab''':
 
'''crontab''':
 +
 +
Normalt en no-brainer på linux systemer, men Qnap er lige lidt anderledes, QNAP undlader user-feltet:
 +
 
  30  23  * * *  /bin/sh  /share/MD0_DATA/backup.sh > /dev/null 2>&1
 
  30  23  * * *  /bin/sh  /share/MD0_DATA/backup.sh > /dev/null 2>&1
 
Kørsel til hver aften kl. 23.30
 
Kørsel til hver aften kl. 23.30
Line 53: Line 75:
  
 
Husk at sæt execution-bit på /share/MD0_DATA/backup.sh
 
Husk at sæt execution-bit på /share/MD0_DATA/backup.sh
 +
 +
'''Kilder:'''
 +
 +
http://wiki.qnap.com/wiki/Add_items_to_crontab
 +
 +
===Netgear ReadyNas duo===
 +
Opsætningen er testet på første udgave af denne NAS, med en sparc-cpu, men jeg regner med at det er tæt på ens på de nye modeller med Marvell og x86.
 +
Systemet ligner et standard Debian.
 +
 +
Start med at installere addon til ssh og apt, så er alt lige ud af landevejen.
 +
 +
'''Authorized keys:'''
 +
 +
Kopier nøglen fra '''/root/.ssh/id_rsa.pub''' op i '''authorized_keys'''.
 +
 +
'''crontab''':
 +
Standard Debian syntaks
 +
30  23  * * *    root  /c/backup.sh &>/dev/null
 +
 +
Kørsel til hver aften kl. 23.30
 +
 +
 +
'''backup.sh'''
 +
SOURCE=/c/backup/
 +
 +
Standard, alle filer ligger i /c/
 +
 +
Husk at sæt execution-bit på /c/backup.sh og kør scriptet en enkelt gang manuelt for at accecptere host-key i rsync.
  
 
===Synology===
 
===Synology===
Jeg har ingen Synology, men det er en udbredt NAS, så en guide til denne ville være rart.
+
'''SSH og Ipkg'''
 +
 
 +
SSH kan aktiveres fra kontrolpanel. Derefter kan der logges ind med root og frontend password.
 +
 
 +
 
 +
ipkg installeres med Synology Boot strap :
 +
http://forum.synology.com/wiki/index.php/Overview_on_modifying_the_Synology_Server,_bootstrap,_ipkg_etc#Installing_compiled.2Fbinary_programs_using_ipkg
 +
 
 +
 
 +
'''Authorized keys:'''
 +
 
 +
ssh-keygen -t rsa
 +
 
 +
 
 +
'''Crontab:'''
 +
 
 +
30      23      *      *      *      root    /volume1/backup.sh > /dev/null 2>&1
 +
 
 +
 
 +
'''Cron procedure:'''
 +
 
 +
nano /etc/crontab
 +
/usr/syno/sbin/synoservicectl --restart crond
 +
 
 +
 
 +
'''Kilder:'''
 +
 
 +
http://jmd.cc/2011/08/05/how-to-run-a-cronjob-on-a-synology-nas/
 +
 
 +
http://forum.synology.com/enu/viewtopic.php?f=39&t=79988
 +
 
 +
http://othell.com/wp/?p=77
 +
 
 
===Buffalo===
 
===Buffalo===
 
Jeg har ingen Buffalo, men den bruges da et par steder, så en guide til denne ville være rart.
 
Jeg har ingen Buffalo, men den bruges da et par steder, så en guide til denne ville være rart.
Line 78: Line 160:
 
  root@rsync:/home/user01/files/AmstrupNAS/Billeder# du -hs ./
 
  root@rsync:/home/user01/files/AmstrupNAS/Billeder# du -hs ./
 
  3.3G ./
 
  3.3G ./
 +
 +
Da det er hardlinks kan vi nu slette gamle folders vi ikke ønsker længere, bare altid behold mindst den seneste som current peger på.
  
 
==Credits==
 
==Credits==
 
Lavet med udgangspunkt i denne guide :
 
Lavet med udgangspunkt i denne guide :
 
http://blog.interlinked.org/tutorials/rsync_time_machine.html
 
http://blog.interlinked.org/tutorials/rsync_time_machine.html
 
Cron på Qnap er lidt anderledes end normale Linux servere:
 
Se http://wiki.qnap.com/wiki/Add_items_to_crontab
 

Latest revision as of 20:24, 26 July 2014

- en del af Tommys Backup Projekt

Ide og koncept

Jeg ønsker at tage backup af min mappe med Billeder på min NAS, jeg ønsker at kunne gå tilbage i tiden i tilfælde af at jeg overskriver eller ændre på et billede. Derfor skal den daglige backup have en mappe med dato og klokkeslet.

Det normale problem er at så vil hver backup fylde som en ny kopi hverdag og ende med at fylde enormt.

Løsningen er at rsync kan basere den igangværende backup på en tidligere kopi på serveren, og så hardlinker alle ens filer til den tidligere backup, og på den måde fylder kun de nye og ændrede filer.

Der er en smule overhead på ca. 4kbytes per hardlink (filsystem inode), men det er billigt sluppet.

Mit guide er min billede mappe på min Qnap nas.

Forberedelse

Start med at opret en tom current mappe i backup-folderen på rsync serveren, på den måde vil den første backup antage at alle filer mangler og lave en fuld backup, slette den tomme current mappe og linke ny current til ny backup. Og vi er klar til næste run.

Første kørsel bør du køre manuelt da du skal godkende server key og den kan godt tage rigtig lang tid.

Hvis du ikke har lavet RSA keys, så er en guide her : http://www.cyberciti.biz/faq/linux-generating-rsa-keys/ Men i store træk :

ssh-keygen -t rsa

Backup script

/share/MD0_DATA/backup.sh (Qnap placering):

#!/bin/sh
DATE=`date "+%Y-%m-%d_%H-%M-%S"`

CURRENT=/files/Billeder/current
FOLDER=/files/Billeder/$DATE

SOURCE=/share/Public/Billeder/

USER=user01
SERVER=rsync.todic.net
PORT=522

# Kbytes/sec
BWLIMIT=500

# ============================================================================================
ssh -p $PORT $USER@$SERVER "mkdir --parents $FOLDER"
rsync -azP --bwlimit $BWLIMIT -e "ssh -p $PORT" --link-dest=$CURRENT $SOURCE $USER@$SERVER:$FOLDER
ssh -p $PORT $USER@$SERVER "rm -r $CURRENT"
ssh -p $PORT $USER@$SERVER "ln -s $FOLDER $CURRENT"


Jeg har valgt at tage klokkeslet med også, så kan jeg kalde scriptet hver time eller ved særlige lejligheder hvis det skulle blive aktuelt.

Bemærk at symlinket "current" ikke vil virke igennem sftp, da ssh's interne sftp-server remapper til chroot'ed folder.

Cronjobs

QNAP

Det kan være en god ide at installere OPT-ware, og så installere nogle tools via ipkg, fx. nano, less eller lign.

Authorized keys:

For at det virker kræver det selvfølgelig at man har kopieret nøglen fra /root/.ssh/ssh_host_rsa_key.pub op i authorized_keys.

crontab:

Normalt en no-brainer på linux systemer, men Qnap er lige lidt anderledes, QNAP undlader user-feltet:

30   23   * * *   /bin/sh  /share/MD0_DATA/backup.sh > /dev/null 2>&1

Kørsel til hver aften kl. 23.30

Kan tilføjes til Qnap crontab på flg måde :

echo "30   23   * * *   /bin/sh  /share/MD0_DATA/backup.sh > /dev/null 2>&1" >> /etc/config/crontab

# Reload crontab
crontab /etc/config/crontab

# Restart contab
/etc/init.d/crond.sh restart

Husk at sæt execution-bit på /share/MD0_DATA/backup.sh

Kilder:

http://wiki.qnap.com/wiki/Add_items_to_crontab

Netgear ReadyNas duo

Opsætningen er testet på første udgave af denne NAS, med en sparc-cpu, men jeg regner med at det er tæt på ens på de nye modeller med Marvell og x86. Systemet ligner et standard Debian.

Start med at installere addon til ssh og apt, så er alt lige ud af landevejen.

Authorized keys:

Kopier nøglen fra /root/.ssh/id_rsa.pub op i authorized_keys.

crontab: Standard Debian syntaks

30   23   * * *     root   /c/backup.sh &>/dev/null

Kørsel til hver aften kl. 23.30


backup.sh

SOURCE=/c/backup/

Standard, alle filer ligger i /c/

Husk at sæt execution-bit på /c/backup.sh og kør scriptet en enkelt gang manuelt for at accecptere host-key i rsync.

Synology

SSH og Ipkg

SSH kan aktiveres fra kontrolpanel. Derefter kan der logges ind med root og frontend password.


ipkg installeres med Synology Boot strap : http://forum.synology.com/wiki/index.php/Overview_on_modifying_the_Synology_Server,_bootstrap,_ipkg_etc#Installing_compiled.2Fbinary_programs_using_ipkg


Authorized keys:

ssh-keygen -t rsa


Crontab:

30      23       *       *       *       root    /volume1/backup.sh > /dev/null 2>&1


Cron procedure:

nano /etc/crontab
/usr/syno/sbin/synoservicectl --restart crond


Kilder:

http://jmd.cc/2011/08/05/how-to-run-a-cronjob-on-a-synology-nas/

http://forum.synology.com/enu/viewtopic.php?f=39&t=79988

http://othell.com/wp/?p=77

Buffalo

Jeg har ingen Buffalo, men den bruges da et par steder, så en guide til denne ville være rart.

Resultatet

root@rsync:/home/user01/files/AmstrupNAS/Billeder# ls -l
drwxrwxrwx 10 user01 user01 12288 Nov 18 14:49 2013-02-20_08-28-54
drwxrwxrwx 10 user01 user01 12288 Nov 18 14:49 2013-02-20_08-48-41
drwxrwxrwx 10 user01 user01 12288 Nov 18 14:49 2013-02-20_08-52-23
drwxrwxrwx 10 user01 user01 12288 Nov 18 14:49 2013-02-20_08-54-43
drwxrwxrwx 10 user01 user01 12288 Nov 18 14:49 2013-02-20_10-42-19
drwxrwxrwx 10 user01 user01 12288 Nov 18 14:49 2013-02-20_10-47-57
drwxrwxrwx 10 user01 user01 12288 Nov 18 14:49 2013-02-20_10-48-27
drwxrwxrwx 10 user01 user01 12288 Nov 18 14:49 2013-02-20_12-10-01
lrwxrwxrwx  1 user01 user01    46 Feb 20 12:10 current -> /files/AmstrupNAS/Billeder/2013-02-20_12-10-01

og lidt usage sammenligning :

root@rsync:/home/user01/files/AmstrupNAS/Billeder# du -hs 2013-02-20_08-28-54/
3.3G	2013-02-20_08-28-54/
root@rsync:/home/user01/files/AmstrupNAS/Billeder# du -hs 2013-02-20_12-10-01/
3.3G	2013-02-20_12-10-01/
root@rsync:/home/user01/files/AmstrupNAS/Billeder# du -hs ./
3.3G	./

Da det er hardlinks kan vi nu slette gamle folders vi ikke ønsker længere, bare altid behold mindst den seneste som current peger på.

Credits

Lavet med udgangspunkt i denne guide : http://blog.interlinked.org/tutorials/rsync_time_machine.html