linux服务器数据同步,Linux服务器数据定期同步和备份方式

数据安全是做数据分析的人需要关注的一大问题。对于我们分析的关键数据、使用的关键脚本都需要定期备份。

scp

最简单的备份方式,就是使用cp (本地硬盘)或scp (远程硬盘)命令,给自己的结果文件新建一个拷贝;每有更新,再拷贝一份。具体命令如下:

cp -fur source_project project_bak

scp -r source_project user@remote_server_ip:project_bak

为了实现定期备份,我们可以把上述命令写入crontab程序中,设置每天的晚上23:00执行。对于远程服务器的备份,我们可以配置免密码登录,便于自动备份。后台输入免密码登录服务器,获取免密码登录服务器的方法。

d60e34ddfd0739c44014fe40124d6267.png

# 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

#installforubuntu, debian

sudo apt-get install python-dev librsync-dev

#self compile

#downlaod rsync-dev fromhttps://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

Install rdiff-backup

#See Reference partfordownload 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 ofrsync-dev

python setup.py --librsync-dir=/home/user/rsync install --     prefix=/home/user/rdiff-backup

Add exeutable files and python modules to environmental variables

#Addthe following wordsinto.bashrcor.bash_profileoranyother config files

export PATH=${PATH}:/home/user/rdiff-backup/bin

export PYTHONPATH=${PYTHONPATH}:/home/user/rdiff-backup/lib/python2.x/site-packages

#pay attention tothe xinpython2.xofabove line which can be 6or7 dependingon

#the Python version used.

Test environmental variable when executing commands through ssh

sshuser@host'echo ${PATH}'#WhenI run this commandinmylocalcomputer,

#I found onlysystem environmetal variableisused

#andnoneofmy self-defined environmetal variableisused.

#Then, I modified the following linesinfile'SetConnections.py'in

#/home/user/rdiff-backup/lib/python2.x/site-packages/rdiff_backup

#tosetenvironmental explicitlywhenlogin.

#pay attention tothe single quote used insidedoublequote

__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 containsenvironmental variableforrdiff-backupfrom.bash_profileand.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)

#!/bin/bash

export PYTHONPATH=${PYTHONPATH}:/soft/rdiff_backup/lib/python2.7/site-packages/

rdiff-backup --no-compression -v5 --exclude '**trash' user@server::source/ bak_dir/

ret=$?

if test $ret -ne 0; then

echo "Wrong in bak"| mutt -s"Wrong in bak"bak@mail.com

else

echo "Right in bak"| mutt -s"Right in bak"bak@mail.com

fi

echo "Finish rdiff-backup $0 ---`date`---">>bak.log 2>&1

echo "`rdiff-backup --exclude '**trash' --compare-at-time 1D user@server::source/ bak_dir/`"| mutt -s"Lists of baked files"bak@mail.com

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

【编辑推荐】

【责任编辑:武晓燕 TEL:(010)68476606】

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/305729.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2021年了,`IEnumerator`、`IEnumerable`接口还傻傻分不清楚?

IEnumerator、IEnumerable这两个接口单词相近、含义相关,傻傻分不清楚。入行多年,一直没有系统性梳理这对李逵李鬼。最近本人在怼着why神的《其实吧,LRU也就那么回事》,方案1使用数组实现LRU,手写算法涉及这一对接口&a…

vs.Net2003无法打开或创建Web应用程序若干解决办法

昨天到今天搞了一整天,把人都要差点搞崩了! ,以后再也不能乱关机了,因为这次的大意,几乎所有的Net安装,调试问题都被我碰到了,还好,我一个个把他记录下来了,同时,在CSDN找了一些相关的解决方法,不敢独享&am…

linux管理Windows文件,Linux与Windows互传文件,用户组管理和用户管理

一、与Windows互传文件linux和windows互传文件,需要使用Xshell,Linux系统需要安装lrzsz包。yum install -y lrzsz //linux安装lrzsz包# sz a.txt //Linux端传输当前目录下的a.txt到windows# rz //windows端选择传输文件到Linux当前目前二、/etc/passwd和…

浅谈​与彼得原理和责任管理有关的小故事

浅谈与彼得原理和责任管理有关的小故事一)老王虽然今年才3年工作经验,但一直深受领导赏识,因为在大家眼里他是一个责任心特别强的人。无论是领导也好,同事也好,只要有任务安排给他,他都会非常欣然的接受&am…

分布式防火墙技术及主要特点

随着网络的发展和普及,特别是互联网应用的飞速发展和普及,网络安全越来越受到各级用户的普遍关注。人们在享受信息化带来的众多好处的同时,也面临着日益突出的信息安全问题。比如:网络环境中国家秘密和商业秘密的保护,…

微软向Chromium贡献代码以优化浏览器滚动体验

喜欢就关注我们吧!近日,微软为 Chromium 社区提交了一个新功能,用于解决以 Chromium 为内核的浏览器在 Windows 10 中滚动响应不够流畅的问题。据悉,Chrome 浏览器在访问某些网站并滚动时会出现抖动的情况,导致其在部分…

armv7的linux系统,CentOS 7(1611) for ARM(armhfp)发布

需要注意的是,ARM版CentOS 7.3.1611是从Red Hat Enterprise Linux 7.3系统中派生出来的,这就意味着操作系统能够兼容上层系统。尽管CentOS 7 Userland for armhfp来自于CentOS 7 GNU/Linux发行版本,但是部分预安装包已经移除,或者…

proftpd的配置

下载proftp最新版。下载地址:[url]ftp://ftp.proftpd.org/distrib/source/[/url]二、安装tar zxvf proftpd*.gz //解压文件。cd proftpd* //考虑到版本不同,所以我用“ * ”代替后面的字符。.…

[C#.NET 拾遗补漏]14:使用结构体实现共用体

在 C 和 C# 编程语言中,结构体(Struct)是值类型数据结构,它使得一个单一变量可以存储多种类型的相关数据。在 C 语言中还有一种和结构体非常类似的语法,叫共用体(Union),有时也被直译…

linux新建文件夹灰色,Ubuntu新建文件夹灰了

#问题描述:WIn10Ubuntu双系统,其中WIn10系统和Ubuntu的目录“/”和“/boot”在同一块固态中,剩余的其他文件都在另一块机械硬盘里面。在机械硬盘下的软件(E:&分区5)和文档(F:&分区6)盘中无法新建文件夹&#x…

右击硬盘分区第一项出现Auto的解决办法

最近网上相信有不少的网友和我一样都中了这种病毒.就是说在右键单击你的硬盘的时候第一项不是打开而是AUTO这个选项.而要想在这种情况下打开的话,就必须用右键单击打开,让我们心理真…

使用 C# 9 的records作为强类型ID - 初次使用

强类型ID实体通常是整数,GUID或者string类型,因为数据库直接支持这些类型,但是,如果实体的ID的类型是一样的,比如都是整数的ID,这有可能会出现ID值传错的问题,看下边的示例。public void AddPro…

linux配置文件引用时间,linux时间设置、screen使用、命令分类、hash作用、命令引用及history命令...

一、 生产环境发现一台服务器系统时间产生偏差,造成服务异常解决方法a、 如果服务器硬件时间准备的话,可使用命令:~#] hwclock -s将硬件时钟同步到系统b、date [MMDDhhmm[[CC]YY][.ss]] 分别为:月日小时分年.秒eg:~]# date 101420…

用拖拉实现设备驱动配置(EsayHMI最新驱动配置方式)

以前的IOServer 是用VB6开发,驱动的配置方式和一般的组态软件没有什么很大的区别,配置起来比较麻烦,对一般的生手来说,要费一番功夫才能配置完毕。 总觉得原有的程序和目前的HMI图元配置环境格格不入,所以重新编写了驱…

HttpClientFactory 结合 Polly 轻松实现重试机制

HttpClientFactory 结合 Polly 轻松实现重试机制Intro我们的服务里有一个 API 会去调用第三方的接口,设置了超时时间,最近偶尔会发生超时的情况,微软在提供 HttpClientFactory 的同时,也提供了一个基于 Polly 的一个扩展&#xff…

ASP.NET 状态管理概览

页面每次被回传到服务器的时候都会创建 Web 页面类的一个新实例。在传统的 Web 开发中,这意味着在每次回传的过程中,页面中所有与页面和控件相关联的信息都将被丢失。例如,如果用户在一个文本框中输入了信息,那么在浏览器或者其他…

linux udp端口大数据包,Linux协议栈中UDP数据报从网卡到用户空间流程总结

NAPI驱动流程:中断发生-->确定中断原因是数据接收完毕(中断原因也可能是发送完毕,DMA完毕,甚至是中断通道上的其他设备中断)-->通过netif_rx_schedule将驱动自己的napi结构加入softnet_data的poll_list链表,禁用网卡中断&am…

浅谈.NET技术公司的实习生培养

浅谈.NET技术公司的实习生培养背景近几年.NET开发者市场的越发不景气,一毕业就选择.NET技术的开发者更是少之又少。一方面是公司效益的日益提高,一方面却是招聘优秀人才的速度总是赶不上公司发展的速度,这样的矛盾不断的倾轧着技术管理者的内…

禁止自动播放功能

运行gpedit.msc打开组策略,在“管理模板--系统”右侧双击“关闭自动播放”,然后设置为“已启用”,并在“关闭自动播放”下拉列表中选择“所有驱动器”,最后“确定”即可。这个设置在“计算机配置”和“用户配置”中都有&#xff0…

MBR的Linux分区机制启动过程,linux系统启动流程(MBR)

总:POST---> Boot Squence ---> Bootloader ---> kernel ---> init---> 完成启动系统:CentOS61、按下电源,cpu找到CMOS中的BIOS并运行起来,这个小程序会完成硬件自检。BIOS:Basic Input and Output Sys…