Difference between revisions of "Versions backup med rsync"
(→QNAP) |
(→Backup script) |
||
Line 19: | Line 19: | ||
==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/ | + | CURRENT=/files/backup/current |
− | FOLDER=/files/ | + | FOLDER=/files/backup/$DATE |
+ | SOURCE=/share/caddi/backup/ | ||
− | rsync -azP --bwlimit | + | rsync -azP --bwlimit 3000 --link-dest=$CURRENT $SOURCE user03@rsync.todic.net:$FOLDER |
− | ssh | + | ssh user03@rsync.todic.net "rm -r $CURRENT && 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. |
Revision as of 13:30, 21 February 2013
af Tommy Bjerg d. 20. feb. 2013
Lavet i forbindelse med backup projketet : SFTP chroot + rsync
Contents
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.
Backup script
/share/MD0_DATA/backup.sh (Qnap placering):
#!/bin/sh DATE=`date "+%Y-%m-%d_%H-%M-%S"` CURRENT=/files/backup/current FOLDER=/files/backup/$DATE SOURCE=/share/caddi/backup/ rsync -azP --bwlimit 3000 --link-dest=$CURRENT $SOURCE user03@rsync.todic.net:$FOLDER ssh user03@rsync.todic.net "rm -r $CURRENT && 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
Synology
Jeg har ingen Synology, og det er ikke testet, men jeg gætter opå noget i den her stil :
Authorized keys:
Jeg ved endnu ikke hvor den gemmer sin pub-key, men gætter på /root/.ssh/ som standard.
Crontab:
30 23 * * * root /volume1/backup.sh > /dev/null 2>&1
Procedure:
nano /etc/crontab synoservice –restart crond
Kilder:
http://jmd.cc/2011/08/05/how-to-run-a-cronjob-on-a-synology-nas/
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