亚洲最大看欧美片,亚洲图揄拍自拍另类图片,欧美精品v国产精品v呦,日本在线精品视频免费

  • 站長資訊網(wǎng)
    最全最豐富的資訊網(wǎng)站

    Linux工具rsync 和tar 命令對系統(tǒng)的全量和增量備份

    Linux工具rsync 和tar 命令對系統(tǒng)的全量和增量備份

    rsync命令語句格式類似于scp,功能強大,節(jié)省帶寬和時間,適合備份重要不怎么變動的文件,,同時可以服務端和在災備端,可以恢復,任意一方出現(xiàn)問題,都可以從對端恢復。但是只能夠一個備份副本,不能多個,

    tar可以備份很多內(nèi)容,也可以備份不同時段的文件

    ————————————————————–

    1)rsync備份

    rsync由于本身的特性,在第一次rsync備份后,以后每次都只是傳內(nèi)容有改變的部分,而不是全部傳。所以,rsync在做鏡像方面是很不錯的,只傳增量,節(jié)省帶寬、時間。

    常規(guī)本地rsync備份命令可以是:

    rsync -az –delete SRC DST

    其中:

    -z 壓縮

    -a 簡單理解就是保持一致性

    –delete 嚴格保證DST內(nèi)容與SRC一致,即DST中SRC沒有的文件會被刪除掉 (–delete-before表示在進行同步之前,先將目標目錄全部刪除,然后再進行同步操作)

    具體命令詳解可以查看:http://man.linuxde.net/rsync

    只用先配置好服務端可客戶端機器對應的文件和服務即可操作

    實例如下:

    [root@linux-node3 mnt]# mkdir test

    [root@linux-node3 mnt]# cd test/

    [root@linux-node3 mnt]# ls

    test

    [root@linux-node3 test]# echo “a1” > a1.txt

    [root@linux-node3 test]# echo “a2” > a2.txt

    [root@linux-node3 test]# echo “a3” > a3.txt

    [root@linux-node3 test]# ls

    a1.txt a2.txt a3.txt aaa

    現(xiàn)在使用rsync進行增量備份

    [root@linux-node3 mnt]# rsync -az –delete test /opt/

    [root@linux-node3 mnt]# ls /opt/

    test

    [root@linux-node3 mnt]# ls /opt/

    test wang

    [root@linux-node3 mnt]# rsync -az –delete test /opt/

    [root@linux-node3 mnt]# ls /opt/

    test wang

    [root@linux-node3 mnt]# ls /opt/test/

    a1.txt a2.txt a3.txt a4 aaa

    10

    注意:

    –delete參數(shù)要放在源目錄和目標目錄前,并且兩個目錄結(jié)構(gòu)一定要一致!不能使用./*。

    如果目錄結(jié)構(gòu)不一致,則不會刪除目標目錄中的目錄。如上,/opt/wang目錄由于目錄結(jié)構(gòu)不一致,故它是多余的但不刪除。

    現(xiàn)在進行增量備份,rsync在第一次同步后,后面就只同步內(nèi)容有改變的部分

    溫馨提示:

    rsync使用–delete參數(shù),在做增量方式的全備份可以說是最佳選擇。但這樣只有一個副本,也就是說如果你想查以前某個時間段的數(shù)據(jù),是沒法查到的。

    2)tar打包備份

    tar的備份就是把文件打包起來,保存到其他地方,可以滿足查檔要求,也即上面說到的。

    再配合crontab,就可以實現(xiàn)定時增量備份

    下面說說tar的三種增量備份方式:

    a)第一種方式:tar -g snapshot方法

    利用tar -g參數(shù),在第一次備份時候生成時間戳文件,里面包含指定備份目錄下的所有文件的一個時間戳,下次增量備份,tar會利用時間戳文件去比較,只有那些內(nèi)容在這段時間有修改的文件,才會被打包。

    實例說明:

    [root@linux-node3 mnt]# ls

    [root@linux-node3 mnt]# mkdir test

    [root@linux-node3 mnt]# echo “123” > test/test1

    [root@linux-node3 mnt]# echo “123123” > test/test2

    [root@linux-node3 mnt]# mkdir test/aaa

    [root@linux-node3 mnt]# ls test/

    aaa test1 test2

    先執(zhí)行完整備份

    [root@linux-node3 mnt]# tar -g snapshot -zcf backup_full.tar.gz test

    [root@linux-node3 mnt]# ls

    aaa backup_full.tar.gz snapshot test

    [root@linux-node3 mnt]# cat snapshot

    GNU tar-1.23-2

    1490172505723210801014901724572030064696476940641test/aaa014901724572030064696476940639testDaaaYtest1Ytest2

    接下來進行差異和增量備份操作:

    增加數(shù)據(jù)

    [root@linux-node3 mnt]# echo “aaaaa” >> test/test1

    [root@linux-node3 mnt]# echo “aaaaa11111” >> test/test3

    [root@linux-node3 mnt]# ls test/

    aaa test1 test2 test3

    執(zhí)行第一次的增量備份 (注意tarball檔名)

    [root@linux-node3 mnt]# tar -g snapshot -zcf backup_incremental_1.tar.gz test

    [root@linux-node3 mnt]# ls

    aaa backup_full.tar.gz backup_incremental_1.tar.gz snapshot test

    [root@linux-node3 mnt]# cat snapshot

    GNU tar-1.23-2

    1490172606339019504014901724572030064696476940641test/aaa014901725622320064796476940639testDaaaYtest1Ntest2Ytest3

    再增加差異數(shù)據(jù)

    [root@linux-node3 mnt]# echo “77777” > test/test1

    [root@linux-node3 mnt]# echo “6666” >> test/test2

    [root@linux-node3 mnt]# touch test/aaaa

    [root@linux-node3 mnt]# ls test/

    aaa aaaa test1 test2 test3

    執(zhí)行第二次的增量備份

    [root@linux-node3 mnt]# tar -g snapshot -zcf backup_incremental_2.tar.gz test

    [root@linux-node3 mnt]# ls

    aaa backup_full.tar.gz backup_incremental_2.tar.gz backup_incremental_1.tar.gz snapshot test

    [root@linux-node3 mnt]# cat snapshot

    GNU tar-1.23-2

    149017272274896944014901724572030064696476940641test/aaa014901726931200065246476940639testDaaaYaaaaYtest1Ytest2Ntest3

    現(xiàn)在進行測試,刪除測試數(shù)據(jù)test

    [root@linux-node3 mnt]# rm -rf test/

    [root@linux-node3 mnt]# ls

    aaa backup_full.tar.gz backup_incremental_2.tar.gz backup_incremental_1.tar.gz snapshot

    開始進行數(shù)據(jù)還原

    恢復第一次全備份的數(shù)據(jù)

    [root@linux-node3 mnt]# tar zxf backup_full.tar.gz

    [root@linux-node3 mnt]# ls

    aaa backup_full.tar.gz backup_incremental_2.tar.gz backup_incremental_1.tar.gz snapshot test

    [root@linux-node3 mnt]# ls test/

    aaa test1 test2

    [root@linux-node3 mnt]# cat test/test1

    123

    恢復第一次增量備份的數(shù)據(jù)

    [root@linux-node3 mnt]# tar zxf backup_incremental_1.tar.gz

    [root@linux-node3 mnt]# ls test/

    aaa test1 test2 test3

    [root@linux-node3 mnt]# cat test/test1

    123

    aaaaa

    [root@linux-node3 mnt]# cat test/test3

    aaaaa11111

    恢復第二次增量備份的數(shù)據(jù)

    [root@linux-node3 mnt]# tar zxf backup_incremental_2.tar.gz

    [root@linux-node3 mnt]# ls test/

    aaa aaaa test1 test2 test3

    [root@linux-node3 mnt]# cat test/test1

    77777

    [root@linux-node3 mnt]# cat test/test2

    123123

    6666

    最后可以結(jié)合crontab實現(xiàn)定時增量備份

    第一次手動進行全備份,生成snapshot時間戳文件,后面寫增量備份腳本

    [root@linux-node3 ~]# vim backup_incremental.sh

    #!/bin/bash

    DATE=`date +%Y%m%d%H%M%S`

    /bin/tar -g /mnt/snapshot -zcf /mnt/backup_incremental_$DATE.tar.gz /mnt/test

    進行定時增量備份操作

    [root@linux-node3 ~]# crontab -e

    每小時進行一次增量備份

    0 * * * * /bin/bash -x /root/backup_incremental.sh > /dev/null 2>&1

    從上面可以看出:

    snapshot作為時間戳文件,它記錄備份目錄里面每個文件的一個當前修改時間,只要下次備份時候,再利用-g ~/snapshot指定上次生成的時間戳文件就可以實現(xiàn)增量備份!

    可能出現(xiàn)下面兩種問題:

    –> snapshot時間戳文件是每次增量備份完成時候更新的,如果在兩次備份間隔間,由于io問題,上次備份沒完成,第二次增量備份就開始的話,

    就有可能出現(xiàn),第二次增量備份并不是一個備份間隔有修改過的文件,而是兩次;如果IO問題一直存在,就會一直累積備份,最后系統(tǒng)超負載,性能變得極差

    –> 上次備份失敗(意外終止)

    這樣的情況,要看是在什么時候終止,因為tar命令在增量備份時候會先掃一遍文件,比較修改時間,因此,有可能備份進程意外終止后,導致時間戳文件清空,下次增量備份就變成全備了,嚴重影響備份策略!

    b)第二種方式:tar -g tarinfo增量備份方法

    只需要指定-g參數(shù),tarinfo文件則是用來記錄備份的一些信息

    1)創(chuàng)建備份測試目錄wang

    [root@zabbix-server opt]# pwd

    /opt

    [root@zabbix-server opt]# echo “1111” > wang/1.txt

    [root@zabbix-server opt]# echo “2222” > wang/2.txt

    [root@zabbix-server opt]# echo “3333” > wang/3.txtwang

    [root@zabbix-server opt]# ls wang/

    1.txt 2.txt 3.txt

    2)進行完整備份

    [root@zabbix-server opt]# tar -g tarinfo -czf backup-full.tar.gz wang/

    [root@zabbix-server opt]# ls

    backup-full.tar.gz tarinfo wang

    3)新增文件

    [root@zabbix-server opt]# echo “4444” > wang/4.txt

    [root@zabbix-server opt]# echo “12121” >> wang/1.txt

    4)進行增量備份

    [root@zabbix-server opt]# tar -g tarinfo -czf backup-incre1.tar.gz wang/

    [root@zabbix-server opt]# ls

    backup-full.tar.gz backup-incre1.tar.gz tarinfo wang

    [root@zabbix-server opt]# cat tarinfo

    GNU tar-1.23-2

    1508989798794775692015089897819623314720538519682wangY1.txtN2.txtN3.txtY4.txt

    5)刪除wang目錄,進行恢復(先全量恢復,再增量恢復)

    [root@zabbix-server opt]# rm -rf wang

    [root@zabbix-server opt]# ls

    backup-full.tar.gz backup-incre1.tar.gz tarinfo

    [root@zabbix-server opt]# tar -zvxf backup-full.tar.gz

    wang/

    wang/1.txt

    wang/2.txt

    wang/3.txt

    [root@zabbix-server opt]# ls wang/

    1.txt 2.txt 3.txt

    [root@zabbix-server opt]# cat wang/1.txt

    1111

    [root@zabbix-server opt]# tar -zvxf backup-incre1.tar.gz

    wang/

    wang/1.txt

    wang/4.txt

    [root@zabbix-server opt]# ls wang/

    1.txt 2.txt 3.txt 4.txt

    [root@zabbix-server opt]# cat wang/1.txt

    c)第三種方式:

    還是覺得tar -g snapshot最大的問題就是不可控,而且穩(wěn)定性較差,出現(xiàn)備份重疊時候很難處理好。

    因此,可以利用find+tar來做增量備份的想法。利用find命令找出最近修改的文件名列表,然后再利用tar打包

    實例如下:

    [root@linux-node3 ~]# ls /mnt/

    test

    [root@linux-node3 ~]# ls /mnt/test/

    aaa aaaa test1 test2 test3

    備份/mnt/test目錄下30分鐘以內(nèi)修改的文件

    先使用find命令列出最近有修改的文件名列表,保存到文件

    [root@linux-node3 ~]# find /mnt/test -mmin -30 -type f >> /mnt/listfile

    [root@linux-node3 ~]# ls /mnt/

    listfile test

    [root@linux-node3 ~]# cat /mnt/listfile

    /mnt/test/test2

    /mnt/test/aaaa

    /mnt/test/test1

    然后使用tar命令對文件列表列出的文件名進行打包備份

    [root@linux-node3 ~]# tar -zcf test.tgz -T /mnt/listfile

    tar: Removing leading `/’ from member names

    [root@linux-node3 ~]# ls /mnt

    listfile test.tgz test

    同理備份/mnt/test目錄下1天之內(nèi)修改的數(shù)據(jù)

    [root@linux-node3 ~]# find /mnt/test -mtime -1 -type f >> /mnt/listfile2

    [root@linux-node3 ~]# tar -zcf test2.tgz -T /mnt/listfile2

    這樣恢復的時候,需要恢復到哪個階段的數(shù)據(jù),就利用這個階段備份的打包文件進行恢復即可!

    這種方式來做增量備份,即使某個時間段機器性能很差,備份重疊,也不會影響到各自的備份進程。

    此外,find命令生成的文件list,還可以方便以后查檔,直接對list搜索指定文件,不用去tar查看。

    贊(0)
    分享到: 更多 (0)
    網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號