Linux下数据备份命令scp、rsync和后台运行

Linux下数据备份命令scp、rsync和后台运行,第1张

scp和rsync 均可实现文件的复制,但相比较,scp占用系统资源较小,rsync速度较快。当小文件众多时,rsync会导致硬盘I/O非常高,而scp基本不影响系统正常使用。可根据需要这俩选其一实现文件复制。

scp 是secure copy的缩写,scp是Linux系统下基于ssh登录进行安全的远程文件拷贝命令。

可以实现本地文件复制到远程服务器,也可以将远程文件复制到本地。

rsync 是remote sync的缩写。使用rsync备份数据时,不会直接覆盖以前的数据(如果数据已经存在),而是先判断已存在的数据和新数据的差异(默认规则是文件大小或修改时间有差异),只有数据不相同时才会把不相同的部分覆盖。在仅作增量数据的copy时比scp灵活。

一般CentOS默认安装rsync,若使用 rsync -v 提示找不到命令,可使用 yum install -y rsync 安装。

单个冒号和双冒号的区别 :使用rsync在远程传输数据前,是需要进行登陆认证的,这个过程可使用ssh协议也可以使用rsync协议完成。单冒号(:)使用的是ssh协议;双冒号(::)使用的是rsync协议。

默认情况下,rsync只确保源文件的所有内容(明确排除的文件除外)都复制到目标目录。它不会使两个目录保持不同,并且不会删除文件。如果要使目标目录成为源目录的镜像副本,则使用--delete选项。可删除只存在目标目录,不存在于源目录的文件。

增量备份算是一个经常使用的场景了。两台服务器之间进行文件定期备份,无需所有文件都copy一遍,仅复制有变动的文件。

具体做法是,第一次同步是全量备份,所有文件在基准目录里面同步一份。以后每一次同步都是增量备份,只同步源目录与基准目录之间有变动的部分,将这部分保存在一个新的目标目录。这个新的目标目录之中,也是包含所有文件,但实际上,只有那些变动过的文件是存在于该目录,其他没有变动的文件都是指向基准目录文件的硬链接。

--link-dest 参数用来指定同步时的基准目录。

上面命令中, --link-dest 参数指定基准目录 /compare/path ,然后源目录 /source/path 跟基准目录进行比较,找出变动的文件,将它们拷贝到目标目录 /target/path 。那些没变动的文件则会生成硬链接。这个命令的第一次备份时是全量备份,后面就都是增量备份了。

一般服务器之间复制文件都比较大,为防止误 *** 作,最好在后台运行。但因为需要和远程服务器之间的ssh通讯多是需要密码的,所以不能直接使用nohup 放置于后台。无论是scp还是rsync都可 *** 作如下:

后台和前台任务的切换

scp不支持断点续传,挂起scp进程可能导致数据缺失。倾向于使用rsync。

如果有其他任务需要使用nohup后台运行,但执行时却忘记了使用nohup,也可参照此方法进行设置。

参考:1. Linux之scp命令及后台运行scp

这是我正在使用的一段备份脚本 mybackup.sh

在redhat Linux 7.2 下运行正常

mybackup.sh

代码:

#!/bin/sh

umount /mnt/bak

mount /dev/sdb1 /mnt/bak

if [ `date +%d` = '01' ] #每月1号进行完全备份

then

bakdir="/mnt/bak/daybak/month/"`date +%m%d`

zl="" #进行完全备份

else

bakdir="/mnt/bak/daybak/"`date +%d`

zl="-N "`date +'%Y-%m-01 00:00:01'`#差异备份

#zl="-N "`date -d '-1 day' +'%Y-%m-%d 00:00:01'` #日增量备份

fi

tmpbakdir=${bakdir}tmp

rm -rf ${tmpbakdir}

mkdir ${tmpbakdir}

tar "${zl}" -czf ${tmpbakdir}/www.tgz /var/www/html

tar "${zl}" -czf ${tmpbakdir}/etc.tgz /etc

tar "${zl}" -czf ${tmpbakdir}/mysql.tgz /var/lib/mysql

tar "${zl}" -czf ${tmpbakdir}/home.tgz /home

tar "${zl}" -czf ${tmpbakdir}/name.tgz /var/name

rm -rf $bakdir

mv $tmpbakdir $bakdir

umount /mnt/bak

把mybackup.sh 放到 /etc/cron.daly 中即实现可月循环 差异/增量 备份

为方便恢复数据我使用了差异备份,如果想节约空间可以使用日总量备份,不过那样恢复数据时刻就要麻烦点了,另外你也可以很容易把上面的脚本改为周循环

事项增量备份的另外方法是利用find命令,

例如只备份一天前修改过的文件

代码:

find /var/www -type f -mtime -1 -print>/tmp/filelist.txt

服务器需求:需要备份文件的服务器(服务器端):192.168.10.2 (RHEL 5)

接收备份文件的服务器(客户端):192.168.10.3 (RHEL 5)

实现功能:

通过rsync工具对turbomail邮件服务器的accounts目录和conf目录进行增量备份。

accounts目录:用于存储用户相关信息的目录

conf目录:用户配置文件存放目录

前提条件:

先将turbomail邮件系统安装好(服务器端与客户端 *** 作一样)

安装过程如下:

1、挂载光驱:mount /dev/cdrom

2、将turbomail的安装包拷贝到跟目录下/

#cd /dev/cdrom

#cp turbomail_linux_x86_xxx.tgz

3、解压turbomail安装包

tar –zxvf turbomail_linux_x86_xxx.tgz

4、启动turbomail

#cd /turbomail

#./starttm.sh

#cd /turbomail/web/bin/

#./startup.sh 5、修改启动脚本/etc/rc.d/rc.local

使邮件服务器开机自动启动加入以下几行:#/turbomail/starttm.sh &

#/turbomail/web/bin/startup.sh &#/turbomail/safestart.sh &

rsync的配置如下:

1.服务器端rsync的配置:使用系统自带的rsync工具,插入系统启动光盘,通过rpm安装rsync工具。

若采用采用源码包安装,上传安装包到服务器1)tar –zxvf rsyncrsync-2.6.9.tar.gz #解压2)cd rsyncrsync-2.6.9 3)./configure #默认配置,生成编译环境


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/7550559.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-07
下一篇2023-04-07

发表评论

登录后才能评论

评论列表(0条)

    保存