| 
                        副标题[/!--empirenews.page--]
                        【新品产上线啦】51CTO播客,随时随地,碎片化学习
            
                
                    
                
                 数据安全是做数据分析的人需要关注的一大问题。对于我们分析的关键数据、使用的关键脚本都需要定期备份。 
scp 
最简单的备份方式,就是使用cp (本地硬盘)或scp (远程硬盘)命令,给自己的结果文件新建一个拷贝;每有更新,再拷贝一份。具体命令如下: 
- cp -fur source_project project_bak 
 - scp -r source_project user@remote_server_ip:project_bak 
 
  
为了实现定期备份,我们可以把上述命令写入crontab程序中,设置每天的晚上23:00执行。对于远程服务器的备份,我们可以配置免密码登录,便于自动备份。后台输入免密码登录服务器,获取免密码登录服务器的方法。 
  
- # Crontab format 
 - # MinuteHourDayMonthWeekcommand  
 - # * 表示每分/时/天/月/周 
 - # 每天23:00 执行cp命令 
 - 0          23      *       *       *      cp -fur source_project project_bak 
 - # */2 表示每隔2分分/时/天/月/周执行命令 
 - # 每隔24小时执行cp命令 
 - 0          */24      *       *       *      cp -fur source_project project_bak 
 - 0          0          */1     *        *     scp -r source_project user@remote_server_ip:project_bak 
 -  
 - # 另外crotab还有个特殊的时间 
 - # @reboot: 开机运行指定命令 
 - @reboot cmd 
 
  
rsync 
cp或scp使用简单,但每次执行都会对所有文件进行拷贝,耗时耗力,尤其是需要拷贝的内容很多时,重复拷贝对时间和硬盘都是个损耗。 
rsync则是一个增量备份工具,只针对修改过的文件的修改过的部分进行同步备份,大大缩短了传输的文件的数量和传输时间。具体使用如下 : 
- # 把本地project目录下的东西备份到远程服务器的/backup/project目录下 
 - # 注意第一个project后面的反斜线,表示拷贝目录内的内容,不在目标目录新建project文件夹。注意与第二个命令的比较,两者实现同样的功能。 
 - # -a: archive mode, quals -rlptgoD 
 - # -r: 递归同步 
 - # -p: 同步时保留原文件的权限设置 
 - # -u: 若文件在远端做过更新,则不同步,避免覆盖远端的修改 
 - # -L: 同步符号链接链接的文件,防止在远程服务器出现文件路径等不匹配导致的软连接失效 
 - # -t: 保留修改时间 
 - # -v: 显示更新信息 
 - # -z: 传输过程中压缩文件,对于传输速度慢时适用 
 - rsync -aruLptvz --delete project/ user@remoteServer:/backup/project 
 - 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
 
 
- #install for ubuntu, debian 
 - sudo apt-get install python-dev librsync-dev 
 - #self compile 
 - #downlaod rsync-dev from https://sourceforge.net/project/showfiles.php?group_id=56125 
 - tar xvzf librsync-0.9.7.tar.gz 
 - export CFLAGS="$CFLAGS -fPIC" 
 - ./configure --prefix=/home/user/rsync --with-pic 
 - make 
 - make install 
 
  
- #See Reference part for download link 
 - # http://www.nongnu.org/rdiff-backup/  
 - python setup.py install --prefix=/home/user/rdiff-backup 
 - #If you complied rsync-dev yourself, please specify the location of rsync-dev 
 - python setup.py --librsync-dir=/home/user/rsync install --     prefix=/home/user/rdiff-backup 
 
  
    - Add exeutable files and python modules to environmental variables
 
 
- #Add the following words into .bashrc or .bash_profile or any other config files 
 - export PATH=${PATH}:/home/user/rdiff-backup/bin 
 - export PYTHONPATH=${PYTHONPATH}:/home/user/rdiff-backup/lib/python2.x/site-packages 
 - #pay attention to the x in python2.x of above line which can be 6 or 7 depending on  
 - #the Python version used. 
 
  
    - Test environmental variable when executing commands through ssh
 
 
- ssh user@host 'echo ${PATH}' #When I run this command in my local computer,  
 -                              #I found only system environmetal variable is used  
 -                              #and none of my self-defined environmetal variable is used. 
 - #Then, I modified the following lines in file 'SetConnections.py' in  
 - #/home/user/rdiff-backup/lib/python2.x/site-packages/rdiff_backup 
 - #to set environmental explicitly when login. 
 - #pay attention to the single quote used inside double quote 
 - __cmd_schema = "ssh -C %s 'source ~/.bash_profile; rdiff-backup --server'" 
 - __cmd_schema_no_compress = "ssh %s 'source ~/.bash_profile; rdiff-backup --server'" 
 - #choose the one contains environmental variable for rdiff-backup from .bash_profile and .bashrc. 
 
  
                                                (编辑:52站长网) 
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! 
                     |