如何把linux下的数据自动备份到异地的另一台win上
1Linux下目录复制:本机->远程服务器scp -r /home/shaoxiaohu/test1 zhidao@19216801:/home/test2 #test1为源目录,test2为目标目录,zhidao@19216801为远程服务器的用户名和ip地址。2Linux下目录复制:远程服务器->本机scp -r zhidao@19216801:/home/test2 /home/shaoxiaohu/test1#zhidao@19216801为远程服务器的用户名和ip地址,test1为源目录,test2为目标目录。注:如果端口号有更改,需在scp 后输入:-P 端口号 (注意是大写,ssh的命令中 -p是小写)
1、你可以在数据库A做计划任务,用exp或者expdp导出,然后scp或者rsync到服务器B
例如计划任务0 0 /data1/backup/expdp_db_baksh;
expdp_db_baksh内容:
#!/bin/sh
~/bash_profile
dst=/data1/backup/db_bak
today=`date +%F`
bakfile=expdp_db_${today}dmp
logfile=expdp_db_${today}log
expdp 'user01/778899' DIRECTORY=expdp_dir1 parallel=2 \
dumpfile=$bakfile SCHEMAS=user01 logfile=$logfile COMPRESSION=all
scp -P22 $bakfile oracle@1721615:/data1/backup/db_bak
exit 0;
2、也可以在服务器B用exp直接导出数据
exp 'user01/778899@DB01' file=$bakfile FULL=Y log=baklog
3、开启归档模式,在服务器A用rman 做全备或增量备份,然后将备份同步到服务器B
指定路径
CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT '/data1/rman/full_%d_%U';
全备份,默认Format
backup incremental level 0 database;
增量备份
backup incremental level 1 database;
将备份rsync 到服务器B
/usr/bin/rsync -av '-e ssh -p 22' oracle@1721611:/data1/rman /data1
4、开启归档模式,在服务器AB间配置DATAGURAD,同步数据
适当的服务器备份方法可以最大限度地减少备份数据占用的存储空间,减少对计算资源和网络带宽使用的影响,从而保证数据安全,并在灾难发生后尽可能快速轻松地恢复数据。。以下是一些服务器备份方法,以及一些可操作的正确服务器备份建议。
1完全备份完整备份是最简单的备份形式,包含所有需要备份的文件夹和文件。。我们通常会压缩文件大小以节省空间,但即使压缩文件大小,完整备份也会占用大量存储空间。。对备份磁盘的大量访问还需要额外的网络带宽资源。完整备份的优点是易于恢复。。数据恢复更快更容易,因为完整的数据随时可用。。完整备份是所有备份方法中最全面的。。然而,这样的操作往往需要很多时间。
2增量备份由于“完整备份”需要很长时间,我们可能需要“增量备份”来减少执行备份所需的时间。增量备份,仅备份自上次备份以来更改的数据。。例如:假设在星期一进行了完整备份,则可以在星期二执行增量备份以备份自星期一以来已更改的文件。。在星期三,对自星期二以来已更改的文件执行另一次增量备份。。由于每次增量备份的数据量都比较小,可以节省存储空间,减少网络带宽。。它还允许保留同一文件的多个版本。
3差异备份差异备份,介于“完全备份”和“增量备份”之间。。差异备份是在完整备份和差异备份之间添加或修改的文件的备份。差异备份本质上是自上次完整备份以来所做的所有更改的累积备份。。恢复“差异备份”比恢复“增量备份”更快,并且只需要最后一次完整备份和最后一次差异备份即可创建完整恢复。。如果要节省存储空间,可以设置差异备份覆盖上次的差异备份。。与增量备份一样,差异备份需要额外的网络带宽来比较当前文件和备份文件,以便仅查找和备份更改的文件。
4镜像备份基于映像的备份允许创建整个系统(一个或多个分区)的完整磁盘备份。操作系统、应用程序以及与之关联的所有数据,而不仅仅是文件和文件夹。。备份保存为称为“图像”的文件。当您需要恢复整个系统时,镜像备份是最快的恢复选项。。它在灾难恢复方面非常有效。。可以选择将整个服务器恢复到与新服务器完全相同的状态,即使服务器具有不同的硬件。。还可以从基于映像的备份中恢复单个文件,而无需恢复整个系统。。备份图像可以保存到各种不同的媒体,为您提供额外的备份副本。
Linux是公认的运行稳定、安全性较高的操作系统,但是服务器硬件故障和各种意外因素都会导致Linux服务器硬盘上数据丢失。特别对于运用在商业领域中的Linux服务器,数据的安全性、完整性和灾难后的数据恢复能力是每一个Linux系统管理员最为关心的问题。Linux作为新一代网络操作系统,在服务器方面的应用越来越广泛。作为专门的网络服务器,一个重要功能就是对服务器数据进行备份,以确保数据的安全。
常见的Linux数据备份方法
Linux操作系统中的数据备份工作是Linux系统管理员的重要工作和职责。传统的Linux服务器数据备份的方法很多,备份的手段也多种多样。常见的Linux数据备份方式仅仅是把数据通过TAR命令压缩拷贝到磁盘的其它区域中去。还有比较保险的做法是双机自动备份,不把所有数据存放在一台计算机上,否则一旦这台计算机的硬盘物理性损坏,那么一切数据将不复存在了。所以双机备份是商业服务器数据安全的基本要求。通常情况下使用的双机备份是双机定时备份文件,而不是实时的。要实现双机备份,必须先在单机上备份所有的文件,然后再把备份文件传输到其它机器上。这样可能比较麻烦,而且有不足之处。例如,这样做对于不需要备份的文件也要在网络上传输,会造成带宽的浪费。
实现备份与刻录的整合
为了弥补Linux上常见备份方法的不足,本文将讲述使用sitback软件将Linux服务器磁盘中的指定数据进行自动备份,并刻录到CDR光盘的方法,以达到数据在光盘中安全存储的目的。此方法将数据备份和光盘刻录两个步骤整合在一起,自动化程度和安全性较高,而且sitback还能实现Linux网络中不同计算机之间的数据备份。
sitback简介
sitback是一款基于开源协议开发的Unix平台下的自动备份软件。与一些 Linux开放源码软件不同,sitback开发者仅提供源代码压缩包的形式给Linux用户下载。尽管sitback没有提供安装方便的RPM格式,但是sitback的安装采用了基于GNU协议的自动安装和配置的automake/autoconf模式,使得一般的Linux系统管理员能顺利地安装调试好sitback。
sitback的获取和安装
目前sitback官方网站wwwmrbeandk提供的 sitback最高版本为031。为了能最大程度地体现sitback的最佳性能,sitback的开发者建议Linux用户不要把sitback的开发版本和Beta测试版本使用到实际的数据备份中去,以防出现意外。
安装sitback源代码压缩包可以根据以下几个简单的步骤完成:
◆建立临时解压目录 /temp;
◆把sitback压缩包拷贝到/temp目录,并使用“tar xvfz sitback-xxxtargz”命令对sitback源代码压缩包进行解压;
◆执行/configure;
◆执行make;
◆执行make install。
通过以上几个步骤可以迅速地安装好sitback。请注意使用超级用户root身份对sitback进行安装。
编译完sitback源代码压缩包之后,接着要在用户根目录中的Home目录下创建一个sitback目录。该目录用来存放一些数据备份和刻录时产生的临时文件,以及一些脚本文件或磁盘驱动器参数文件。
同所有通过编写脚本文件来运行的程序一样,sitback也需要Linux用户自行编写备份和刻录的脚本文件,并让Linux系统把sitback当作一个备份进程(backup-daemon)来自动执行。使用高效安全的Webmin管理系统来自动执行sitback也很方便。总之,用最少的代码编写出适合Linux系统实际情况的脚本是最为安全、高效的。
将数据刻录至光盘的条件
让sitback自动备份指定的磁盘数据,并将备份的数据直接刻录到光盘中去,必须考虑的条件主要有以下几点:
◆sitback运行的时间,即备份数据时间;
◆要备份的源目录;
◆要备份到的目的目录;
◆选择存储介质,包括磁介质、光存储介质等;
◆是否要对备份数据进行校验比较,提高备份安全性;
◆备份模式,全备份或部分数据备份;
◆备份数据还原问题。
sitback提供了很多参数供用户选择,具体参数和用法可以参考sitback源代码压缩包里的开发文档和详细的使用手册。
实例运用
实例1
假设某Linux服务器中有以下这些目录:
◆/usr/smbdata 包含大多数应用软件和用户数据文件;
◆/usr/grafik 包含有重要的图形文件。
为了备份以上两个目录数据,可以编写一个脚本文件,代码及说明如下:
ARCHIVE=/dev/st0
#定义要备份的数据
(ARCHIVE表示要备份的磁盘驱动器、文件目录,甚至主机,例如:
“backuphost:/dev/st0”、
“backup@backuphost:/dev/nrt0”、
“me@192168117:/tmp/temp_backuptargz”等)
TARGET=/usr/smbdata
#要备份的目的目录
TARGET=/usr/grafik
#要备份的目的目录
COMPRESSION=YES
#备份模式为对数据进行压缩后备份
VERIFY=YES
#对备份数据进行校验
REPORTFILE=/usr/smbdata/latest_backuptxt
#产生备份报告文件
REPORTPRINTER=//penguin4/Canon
#打印机信息
SMBUSER=computer1
#SAMBA用户端计算机名
SMBPASSWD=123abc
#访问密码
VOLUMENAME=Full backup - Taastrup
TIME=1;02;00
#备份时间,每天2:00进行备份
TIME=2;02;00
TIME=3;02;00
TIME=4;02;00
TIME=5;02;00
TIME=6;02;00
以上是一个简单的数据自动备份脚本的样本文件。如果想使用SysV初始化,可以在/etc/rcd/initd/中创建一个小的脚本文件来运行 sitback。在上述脚本最后一行加入“/usr/local/bin/sitback -d data”才能使得sitback自动运行。查看每次备份的情况时,可以打开临时文件/sitback/sitbacklog,里面有sitback 运行的详细记录。
实例2
使用sitback将Linux服务器中数据自动备份、刻录两个步骤进行整合。
为了达到数据备份和光盘刻录整合的目的,需要使用以下脚本来实现。它是来自sitback官方网站的样板脚本。
# Full backup of /home/bean, excluding Images
#对/home/bean,目录进行全备份
# bean@mrbeandk 2002
# Write the archive to my cd-writer at 0,0,0
#将备份数据在指定时间写入CDR刻录机中
# (Iomega ZIPCD 650, USB), use speed=2, so that i can 刻录机硬件参数
# do other things while the backup is cooking Also
# use on-the-fly copy to avoid too much temporary data
# (my machine has no problem supporting this)
#
ARCHIVE=0,0,0
SPEED=2
#Iomega ZIPCD 650, USB刻录机写入速度,
CD ON THE FLY
#写入方式
# It is a huge advantage to have the files directory available
# on the cd, not inside an archive, when restoring my
# setup, hence the type 'CDRW'
#
TYPE=CDRW
#光盘类型,CDRW可擦写光盘
# Targets Exclude Images
TARGET=/home/bean
#目标文件目录
EXCLUDE=/home/bean/Images
#目标文件目录中不用备份的目录(即排除备份的目录)
# Various stuff Compression and verification will automagically
# be turned off by sitback, but i do not want the warnings either,
# so i just turn it off from the beginning
#
VERIFY=NO
#对备份数据进行校验
COMPRESSION=NO
#备份数据无需压缩
# When done, put a backup report in /home/bean/backuplog
#
REPORTFILE=/home/bean/backuplog
#产生的备份报告文件及路径
关于sitback备份数据的恢复及SSH等安全措施,此处不予举例说明。总的来说,sitback是一款不可多得的Linux操作系统平台中优秀的数据备份和恢复工具,使用sitback可以使得企业实现安全而高效的备份。
linux系统下使用脚本定时备份数据库,代码如下:#!/bin/bash #Setting #设置数据库名,数据库登录名,密码,备份路径,日志路径,数据文件位置,以及备份方式 #默认情况下备份方式是mysqldump,还可以是mysqldump,mysqldotcopy,如果注释掉第#18行,则默认以tag的方式备份#默认情况下,用root(空)登录mysql数据库,备份至/root/dbxxxxxtgz DBName=mysqlDBUser=rootDBPasswd=123456BackupPath=/home/wang/www/backup/mysql/mysqlbackupLogFile=/home/wang/www/backup/mysql/dblogDBPath=/var/lib/mysql/#BackupMethod=mysqldump#BackupMethod=mysqlhotcopy#BackupMethod=tar#Setting EndNewFile="$BackupPath"db$(date +%y%m%d)tgz DumpFile="$BackupPath"db$(date +%y%m%d) OldFile="$BackupPath"db$(date +%y%m%d --date='5 days ago')tgz echo "-------------------------------------------" >> $LogFile echo $(date +"%y-%m-%d %H:%M:%S") >> $LogFile echo "--------------------------" >> $LogFile #Delete Old Fileif [ -f $OldFile ] then rm -f $OldFile >> $LogFile 2>&1 echo "[$OldFile]Delete Old File Success!" >> $LogFile else echo "[$OldFile]No Old Backup File!" >> $LogFile fi if [ -f $NewFile ] then echo "[$NewFile]The Backup File is exists,Can’t Backup!" >> $LogFile else case $BackupMethod in mysqldump) if [ -z $DBPasswd ] then mysqldump -u $DBUser --opt $DBName > $DumpFile else mysqldump -u $DBUser -p$DBPasswd --opt $DBName > $DumpFile fi tar czvf $NewFile $DumpFile >> $LogFile 2>&1 echo "[$NewFile]Backup Success!" >> $LogFile rm -rf $DumpFile ;; mysqlhotcopy) rm -rf $DumpFile mkdir $DumpFile if [ -z $DBPasswd ] then mysqlhotcopy -u $DBUser $DBName $DumpFile >> $LogFile 2>&1 else mysqlhotcopy -u $DBUser -p $DBPasswd $DBName $DumpFile >>$LogFile 2>&1 fi tar czvf $NewFile $DumpFile >> $LogFile 2>&1 echo "[$NewFile]Backup Success!" >> $LogFile rm -rf $DumpFile ;; ) /etc/initd/mysqld stop >/dev/null 2>&1 tar czvf $NewFile $DBPath >> $LogFile 2>&1 /etc/initd/mysqld start >/dev/null 2>&1 echo "[$NewFile]Backup Success!" >> $LogFile ;; esacfiecho "-------------------------------------------"echo#lftp -f lftpsh 如果有FTP可同时上传ftp中。再利用crontab命令生成/var/spool/cron/root 文件:#crontab –e //打开一个编辑窗口,第一行会有内容格式的提示,在此输入命令//m h dom mon dow command //具体意义表示:分钟 小时 日期 月份 星期 命令,在某月(mon)的某天(dom)或者星期几(dow)的几点(h,24小时制)几分(m)执行某个命令(command)//如: 10 02 /home/backup/autobackupmysqlsh (表示零晨二点十分执行备份脚本)
1备份Linux系统 window系统在运行状态下,我们是无法将文件拷贝出来的,那么在Linux下呢?她的文件结构式一种树型结构。而且在系统运行的时候我们可以进行打包所有系统文件。特别要说的在Linux的root账户具备系统上的任何操作,这也是为什么要创建一个比较低级别的用户权限来防止系统误操作导致系统崩溃的晕因了。下面看备份命令。 #切换到root sudosu #进入系统根目录 cd/ #执行打包命令 tarcvpzflinuxbackuptgz--exclude=/proc--exclude=/lost+found--exclude=/linuxbackuptgz--exclude=/mnt--exclude=/sys/ 命令解释: tar:linux常用的打包程序 cvpzf:式tar的参数,c-创建新文档 v-处理过程中输出相关信息 p-表示保持相同的权限 z-调用gzip来压缩归档文件,与-x联用时调用gzip完成解压缩 f-对普通文件操作 linuxbackuptgz:要打包成的文件名 --exclude=/proc:排除/proc目录,不打包这个目录,后面也同理,记得排除自身打包的文件名 /:表示打包linux根目录所有文件,当然了排除的文件不包含在内 整个过程理解起来意思就是,创建一个新的文件名linuxbackuptgz压缩文件,它保存式从排除了指定目录后的文件,并且保存原有的权限设置,这里必须记下你排除的目录,恢复的时候需要手动创建。具体哪些目录要排除在外,这个根觉不同的环境和工作需要进行选择就是了。执行后等待一定时间就可以了,将这个linuxbackuptgz拷贝到其他地方即可,备份完成了。 重点指出:在打包过程中不要进行任何的操作,否则会修改某些文件,在备份完后tar会提示错误。恢复也是一样。 2恢复Linux系统 按照上面的方式备份完系统就可以使用该方法恢复你的备份文件了。如果你的系统崩溃了无法进入系统那么你可以借助引导CD或者其他引导系统进入,如果你可以进入系统,首先拷贝该备份文件到/目录下,然后执行下面命令进行恢复系统: #提升到root sudosu #进入根目录 cd/ #解压恢复系统 tarxvpfzlinuxbackuptgz-C/ 等执行完后,别急着重启系统,要记得创建你在备份时候排除的目录,手动创建,例如上面我们排除,我们需创建 mkdirproc mdkirlost+found mkdirmnt mkdirsys 这个时候你就可以重启系统了。恢复完成了。
备份linux系统,不像Windows,Linux不限制根用户存取任何东西,因此,你完全可以把一个分区上每一个的文件放入一个TAR文件中。来实施这一方法,用这个成为根用户:
sudo su
接着去你的文件系统的根目录(在我们的例子中,我们使用它,不过你可以去你希望备份的任何地方,包括远程或可移动驱动器。)
cd /
然后,下面就是我用来备份我的系统的完整的命令:
tar cvpzf backuptgz / --exclude=/proc --exclude=/lost+found --exclude=/backuptgz --exclude=/mnt --exclude=/sys
接着,让我们稍微解释一下:
很明显,'tar'部分就是我们将要使用的软件。
'cvpfz'是我们给tar加的选项,像“创建一个压缩文档”(这是显然的),“保存权限”(以便使每一个相同的文件有相同的权限),以及“gzip”(缩减大小)。
接下来,是压缩文档将获得的名称,在我们的例子中是backuptgz。
紧随其后的是我们想要备份的根目录。既然我们想备份所有东西:/
接着就是我们要剔除的目录了。我们不想备份每一样东西,因为包括有些目录不是非常有用。同时确保你没有把备份文件本身也加进去了,否则,你会得到怪异的结果的。你也许同样不打算把/mnt文件夹包括进来——如果你在那儿挂载了其他分区——否则最终你会把那些也备份的。同时确保你没有任何东西挂载在 /media(即没有挂载任何cd或可移动介质)。否则,剔除/media。
如果你想排除所有的其他分区,你可以使用 'l' 参数代替 --exclude, 上面的命令看起来象这样:
tar cvpzlf backuptgz / --exclude=/lost+found --exclude=/backuptgz
按:kvidell在论坛主题里建议也剔除/dev目录。不过,我有其他证据表明这样做是不明智的。
好了,如果命令适合你的话,敲击确定键(或者回车键,管它叫什么名字),然后什么都不用干,放松一下。备份也许会花上一段时间。
完了以后,在你的文件系统的根目录会有一个叫作backuptgz的文件——很可能相当巨大。现在你可以把烧录到DVD上,或者移动到另一台机器,你可以做任何你想做的事情。
按2:在进程的最后,你也许会得到一条信息,写着“tar:由于先前错误的耽搁而存在错误”或者其他什么,不过大多数情况下你可以仅仅忽略它。
作为选择,你可以使用Bzip来压缩你的备份。这意味着较高的压缩比但是也意味着较低的速度。如果压缩比对你很重要,只需用“j”替换命令中的“z”, 同时给备份命一个相应的扩展名。这些会使命令变成这样:
tar cvpjf backuptarbz2 / --exclude=/proc --exclude=/lost+found --exclude=/backuptarbz2 --exclude=/mnt --exclude=/sys
21 通过网络备份如果空白的文件系统太少了并且你又不能挂载其它的文件系统来保存备份文件,你有可能使用 netcat 来完成备份
在接受端你必须设置 netcat 用于写备份文件,象这样:
nc -l -p 1024 > backuptarbz2
然后你传送 tar 命令,不带 'f' 参数通过 netcat 在发送端,象这样:
tar cvpj / | nc -q 0 1024
在上面的命令中 1024 仅仅是一个随机的端口号, 任何从 1024 或以上的都可以工作
如果安全的通过网络备份不依赖文件系统完成备份 事实上一个真正快的网络比写备份文件到磁盘要快
在上面的讲述中 (由于我刚刚发呆,因此我不能证实它是可靠的) 是这个命令:
tar cvpj / | ssh "cat > backuptarbz2"
3 恢复警告:看在上帝的份上,在这一部分请小心谨慎。如果你不理解你在这里干了什么,你可能最终毁坏了对你而言很重要的东西,所以请小心谨慎。 那么,我们将紧接着上一章的例子:在分区的根目录下的backuptgz文件
再一次确保你是根用户以及备份文件在文件系统的根目录。
Linux美妙的地方之一就是这一项工作甚至可以在一个正在运行的系统上进行;没必要被引导cd或者任何东西搞得晕头转向。当然,如果你使你的系统无法被引导了。你也许别无选择,只能使用一张live-cd了,但是结果是一样的。你甚至可以在Linux系统正在运行的时候,移除它里面所有文件。可是我不告诉你那个命令!
好了,言归正传。这是我要用的命令:
tar xvpfz backuptgz -C /
如果你使用 bz2
tar xvpfj backuptarbz2 -C /
警告:这会把你分区里所有文件替换成压缩文档里的文件!
只要敲一下确定/回车/你的兄弟/随便什么,然后去看焰火吧。同样,这会花一段时间。等它完成了,你就有了一个完全恢复的Ubuntu系统!只需确保在你做其他任何事情之前,重新创建你剔除的目录:
mkdir proc mkdir lost+found mkdir mnt mkdir sys etc
当你重启以后,所以的事情都会和你备份的时候一模一样。
31 恢复 GRUB那么,如果你想把你的系统移动到一块新硬盘上,或者,你想对你的GRUB做一些糟糕的事情(比方说,安装Windows),你也将需要重装GRUB。在这个论坛里,有不少如何做这个的非常好的指导,所以我不会从头重新做起。相反,看一下这里(论坛) 或者这儿:RecoveringUbuntuAfterInstallingWindows
在这个论坛主题中,提出了一些方法。我个人建议第二个,remmelt贴出来的,因为我发现它每次都管用。
对,就是那个!我希望它有帮助!
4 其他方法也许你也想看一下这些能帮助你自动备份系统的程序
Partimage
Mondo Rescue
0条评论