一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

Linux|Centos|Ubuntu|系統進程|Fedora|注冊表|Bios|Solaris|Windows7|Windows10|Windows11|windows server|

服務器之家 - 服務器系統 - Linux - Linux服務器數據定期同步和備份方式

Linux服務器數據定期同步和備份方式

2021-06-01 02:00生信寶典陳同 Linux

數據安全是做數據分析的人需要關注的一大問題。對于我們分析的關鍵數據、使用的關鍵腳本都需要定期備份。

數據安全是做數據分析的人需要關注的一大問題。對于我們分析的關鍵數據、使用的關鍵腳本都需要定期備份。

scp

最簡單的備份方式,就是使用cp (本地硬盤)或scp (遠程硬盤)命令,給自己的結果文件新建一個拷貝;每有更新,再拷貝一份。具體命令如下:

  1. cp -fur source_project project_bak 
  2. scp -r source_project user@remote_server_ip:project_bak 

為了實現定期備份,我們可以把上述命令寫入crontab程序中,設置每天的晚上23:00執行。對于遠程服務器的備份,我們可以配置免密碼登錄,便于自動備份。后臺輸入免密碼登錄服務器,獲取免密碼登錄服務器的方法。

 

  1. # Crontab format 
  2. MinuteHourDayMonthWeekcommand  
  3. # * 表示每分/時/天/月/周 
  4. # 每天23:00 執行cp命令 
  5. 0          23      *       *       *      cp -fur source_project project_bak 
  6. # */2 表示每隔2分分/時/天/月/周執行命令 
  7. # 每隔24小時執行cp命令 
  8. 0          */24      *       *       *      cp -fur source_project project_bak 
  9. 0          0          */1     *        *     scp -r source_project user@remote_server_ip:project_bak 
  10.  
  11. # 另外crotab還有個特殊的時間 
  12. # @reboot: 開機運行指定命令 
  13. @reboot cmd 

rsync

cp或scp使用簡單,但每次執行都會對所有文件進行拷貝,耗時耗力,尤其是需要拷貝的內容很多時,重復拷貝對時間和硬盤都是個損耗。

rsync則是一個增量備份工具,只針對修改過的文件的修改過的部分進行同步備份,大大縮短了傳輸的文件的數量和傳輸時間。具體使用如下 :

  1. # 把本地project目錄下的東西備份到遠程服務器的/backup/project目錄下 
  2. # 注意***個project后面的反斜線,表示拷貝目錄內的內容,不在目標目錄新建project文件夾。注意與第二個命令的比較,兩者實現同樣的功能。 
  3. # -a: archive mode, quals -rlptgoD 
  4. # -r: 遞歸同步 
  5. # -p: 同步時保留原文件的權限設置 
  6. # -u: 若文件在遠端做過更新,則不同步,避免覆蓋遠端的修改 
  7. # -L: 同步符號鏈接鏈接的文件,防止在遠程服務器出現文件路徑等不匹配導致的軟連接失效 
  8. # -t: 保留修改時間 
  9. # -v: 顯示更新信息 
  10. # -z: 傳輸過程中壓縮文件,對于傳輸速度慢時適用 
  11. rsync -aruLptvz --delete project/ user@remoteServer:/backup/project 
  12. rsync -aruLptvz --delete project user@remoteServer:/backup/ 

rsync所做的工作為鏡像,保證遠端服務器與本地文件的統一。如果本地文件沒問題,遠端也不會有問題。但如果發生誤刪或因程序運行錯誤,導致文件出問題,而在同步之前又沒有意識到的話,遠端的備份也就沒了備份的意義,因為它也被損壞了。誤刪是比較容易發現的,可以及時矯正。但程序運行出問題,則不一定了。

rdiff-backup

這里推薦一個工具rdiff-backup不只可以做增量備份,而且會保留每次備份的狀態,新備份和上一次備份的差別,可以輕松回到之前的某個版本。***的要求就是,本地服務器和遠端服務器需要安裝統一版本的rdiff-backup。另外還有2款工具 duplicity和`Rsnapshot也可以做類似工作,但方法不一樣,占用的磁盤空間也不一樣,具體可查看原文鏈接中的比較。

具體的rdiff-backup安裝和使用如下 (之前寫的是英文,內容比較簡單,就不再翻譯了):

  • Install rdiff-backup at both local and remote computers
  1. #install for ubuntu, debian 
  2. sudo apt-get install python-dev librsync-dev 
  3. #self compile 
  4. #downlaod rsync-dev from https://sourceforge.net/project/showfiles.php?group_id=56125 
  5. tar xvzf librsync-0.9.7.tar.gz 
  6. export CFLAGS="$CFLAGS -fPIC" 
  7. ./configure --prefix=/home/user/rsync --with-pic 
  8. make 
  9. make install 
  • Install rdiff-backup
  1. #See Reference part for download link 
  2. # http://www.nongnu.org/rdiff-backup/  
  3. python setup.py install --prefix=/home/user/rdiff-backup 
  4. #If you complied rsync-dev yourself, please specify the location of rsync-dev 
  5. python setup.py --librsync-dir=/home/user/rsync install --     prefix=/home/user/rdiff-backup 
  • Add exeutable files and python modules to environmental variables
  1. #Add the following words into .bashrc or .bash_profile or any other config files 
  2. export PATH=${PATH}:/home/user/rdiff-backup/bin 
  3. export PYTHONPATH=${PYTHONPATH}:/home/user/rdiff-backup/lib/python2.x/site-packages 
  4. #pay attention to the x in python2.x of above line which can be 6 or 7 depending on  
  5. #the Python version used. 
  • Test environmental variable when executing commands through ssh
  1. ssh user@host 'echo ${PATH}' #When I run this command in my local computer,  
  2.                              #I found only system environmetal variable is used  
  3.                              #and none of my self-defined environmetal variable is used. 
  4. #Then, I modified the following lines in file 'SetConnections.py' in  
  5. #/home/user/rdiff-backup/lib/python2.x/site-packages/rdiff_backup 
  6. #to set environmental explicitly when login. 
  7. #pay attention to the single quote used inside double quote 
  8. __cmd_schema = "ssh -C %s 'source ~/.bash_profile; rdiff-backup --server'" 
  9. __cmd_schema_no_compress = "ssh %s 'source ~/.bash_profile; rdiff-backup --server'" 
  10. #choose the one contains environmental variable for rdiff-backup from .bash_profile and .bashrc. 

Use rdiff-backup

  • Start backup

rdiff-backup --no-compression --print-statistics user@host::/home/user/source_dir destination_dir

If the destination_dir exists, please add --force like rdiff-backup --no-compression --force --print-statistics user@host::/home/user/source_dir destination_dir. All things in original destination_dir will be depleted.

If you want to exclude or include special files or dirs please specify like --exclude '**trash' or --include /home/user/source_dir/important.

  • Timely backup your data

Add the above command into crontab (hit 'crontab -e' in terminal to open crontab) in the format like 5 22 */1 * * command which means executing the command at 22:05 everyday.

  • Restore data

Restore the latest data by running rdiff-backup -r now destination_dir user@host::/home/user/source_dir.restore. Add --force if you want to restore to source_dir.

Restore files 10 days ago by running rdiff-backup -r 10D destination_dir user@host::/home/user/source_dir.restore. Other acceptable time formats include 5m4s (5 minutes 4 seconds) and 2014-01-01 (January 1st, 2014).

Restore files from an increment file by running rdiff-backup destination_dir/rdiff-backup-data/increments/server_add.2014-02-21T09:22:45+08:00.missing user@host::/home/user/source_dir.restore/server_add. Increment files are stored in destination_dir/rdiff-backup-data/increments/server_add.2014-02-21T09:22:45+08:00.missing.

  • Remove older records to save space

Deletes all information concerning file versions which have not been current for 2 weeks by running rdiff-backup --remove-older-than 2W --force destination_dir. Note that an existing file which has not changed for a year will still be preserved. But a file which was deleted 15 days ago can not be restored after this command. Normally one should use --force since it is used to delete multiple increments at the same time which --remove-older-thanrefuses to do by default.

Only keeps the last n rdiff-backup sessions by running rdiff-backup --remove-older-than 20B --force destination_dir.

  • Statistics

Lists increments in given golder by rdiff-backup --list-increments destination_dir/.

Lists of files changed in last 5 days by rdiff-backup --list-changed-since 5D destination_dir/.

Compare the difference between source and bak by rdiff-backup --compare user@host::source-dir destination_dir

Compare the sifference between source and bak (as it was two weeks ago) by rdiff-backup --compare-at-time 2W user@host::source-dir destination_dir.

A complete script (automatically sync using crontab)

  1. #!/bin/bash 
  2.  
  3. export PYTHONPATH=${PYTHONPATH}:/soft/rdiff_backup/lib/python2.7/site-packages/ 
  4.  
  5. rdiff-backup --no-compression -v5 --exclude '**trash' user@server::source/ bak_dir/ 
  6.  
  7. ret=$? 
  8. if test $ret -ne 0; then 
  9.     echo "Wrong in bak" | mutt -s "Wrong in bak" [email protected] 
  10. else 
  11.     echo "Right in bak" | mutt -s "Right in bak" [email protected] 
  12. fi 
  13.  
  14. echo "Finish rdiff-backup $0 ---`date`---"  >>bak.log 2>&1 
  15.  
  16. echo "`rdiff-backup --exclude '**trash' --compare-at-time 1D user@server::source/ bak_dir/`" | mutt -s "Lists of baked files" [email protected] 

References

  • rdiff-backup
  • duplicity
  • rsnapshot
  • http://www.saltycrane.com/blog/2008/02/backup-on-linux-rsnapshot-vs-rdiff/
  • http://james.lab6.com/2008/07/09/rdiff-backup-and-duplicity/
  • http://bitflop.com/document/75
  • http://askubuntu.com/questions/2596/comparison-of-backup-tools
  • http://www.reddit.com/r/linux/comments/fgmbb/rdiffbackup_duplicity_or_rsnapshot_which_is/
  • http://serverfault.com/questions/491341/optimize-space-rdiff-backup
  • Another great post on usage of rdiff-backup

原文鏈接:https://mp.weixin.qq.com/s/Ovl46SbnQLc5q6Rz3Iaczg

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产欧美一区二区三区免费看 | 美女福利视频一区二区 | 丝袜捆绑调教视频免费区 | 亚洲va久久久噜噜噜久久狠狠 | 羞羞漫画免费漫画页面在线看漫画秋蝉 | 国产九九在线 | 99久久6er热免费精品 | 国产成人精品一区二区不卡 | 亚洲波多野结衣日韩在线 | 亚洲 日本 天堂 国产 在线 | 日本大片免aaa费观看视频 | 边摸边吃奶又黄激烈视频韩国 | 国产二区精品视频 | 免费看视频高清在线观看 | 日韩欧美亚洲一区二区综合 | 男女发生性关系视频 | 日本漫画大全之工之口 | 日韩成本大片35分钟免费播放 | 日本片免费观看一区二区 | 色多多在线视频 | 久久精品国产欧美日韩99热 | 四虎论坛| 手机看片福利 | 免费看男人狂躁女人 | 欧美人与日本人xx在线视频 | 欧美日韩视频一区三区二区 | 国内精品免费一区二区三区 | 男人天堂2023 | 美女脱了内裤打开腿让男人图片 | 色天天综合网色鬼综合 | 欧美激烈精交gif动态图18p | 12一14性水蜜桃 | 午夜久久免影院欧洲 | 日本又黄又裸一级大黄裸片 | 四虎最新免费观看网址 | 2019国内自拍| 公园吃女人奶野战视频 | 海角社区在线视频 | 国产专区视频在线观看 | 青草午夜精品视频在线观看 | 国内精品91东航翘臀女神在线 |