centos7系统备份与还原
1、系统备份
下面是我用来备份系统的完整命令:
# cd /# tar -zcvpf centos7.tgz --exclude=/proc --exclude=/lost+found --exclude=/mnt --exclude=/sys --exclude=centos7.tgz /
“tar”当然就是我们备份系统所使用的程序了。
“cvpfz”是tar的选项,意思是“创建档案文件”、“保持权限”(保留所有东西原来的权限)、“使用gzip来减小文件尺寸”。
“backup.gz”是我们将要得到的档案文件的文件名。
“/”是我们要备份的目录,在这里是整个文件系统。
在档案文件名“backup.gz”和要备份的目录名“/”之间给出了备份时必须排除在外的目录。有些目录是无用的,例如“/proc”、“/lost+ found”、“/sys”。当然,“backup.gz”这个档案文件本身必须排除在外,否则你可能会得到一些超出常理的结果。如果不把“/mnt”排 除在外,那么挂载在“/mnt”上的其它分区也会被备份。另外需要确认一下“/media”上没有挂载任何东西(例如光盘、移动硬盘),如果有挂载东西, 必须把“/media”也排除在外。
有人可能会建议你把“/dev”目录排除在外,但是我认为这样做很不妥,具体原因这里就不讨论了。
执行备份命令之前请再确认一下你所键入的命令是不是你想要的。执行备份命令可能需要一段不短的时间。
备份完成后,在文件系统的根目录将生成一个名为“backup.tgz”的文件,它的尺寸有可能非常大。现在你可以把它烧录到DVD上或者放到你认为安全的地方去。
在备份命令结束时你可能会看到这样一个提示:’tar: Error exit delayed from previous errors’,多数情况下你可以忽略它。
你还可以用Bzip2来压缩文件,Bzip2比gzip的压缩率高,但是速度慢一些。如果压缩率对你来说很重要,那么你应该使用Bzip2,用“j”代替命令中的“z”,并且给档案文件一个正确的扩展名“bz2”。完整的命令如下:
tar cvpjf backup.tar.bz2 –exclude=/proc –exclude=/lost+found –exclude=/backup.tar.bz2 –exclude=/mnt –exclude=/sys /
2、系统恢复
在进行恢复系统的操作时一定要小心!如果你不清楚自己在做什么,那么你有可能把重要的数据弄丢,请务必小心!
接着上面的例子。切换到root用户,并把文件“backup.tgz”拷贝到分区的根目录下。
在 Linux中有一件很美妙的事情,就是你可以在一个运行的系统中恢复系统,而不需要用boot-cd来专门引导。当然,如果你的系统已经挂掉不能启动了, 你可以用Live CD来启动,效果是一样的。你还可以用一个命令把Linux系统
中的所有文件干掉,当然在这里我不打算给出这个命令!
使用下面的命令来恢复系统:
tar -zcvpf backup.tar.gz -C /
如果你的档案文件是使用Bzip2压缩的,应该用:
tar xvpfj backup.tar.bz2 -C /
注意:上面的命令会用档案文件中的文件覆盖分区上的所有文件。
执行恢复命令之前请再确认一下你所键入的命令是不是你想要的,执行恢复命令可能需要一段不短的时间。
rsync实现数据备份
1、rsync是什么
在开始正式学习 rsync 之前,我们先来回答这个问题:rsync 是什么。
rsync(remote synchronize)是 Liunx/Unix 下的一个远程数据同步工具。它可通过 LAN/WAN 快速同步多台主机间的文件和目录,并适当利用 rsync 算法(差分编码)以减少数据的传输。rsync 算法并不是每一次都整份传输,而是只传输两个文件的不同部分,因此其传输速度相当快。除此之外,rsync 可拷贝、显示目录属性,以及拷贝文件,并可选择性的压缩以及递归拷贝。
2、rsync优点
rsync有以下几个优点:
可以镜像保存整个目录树和文件系统。
可以很容易做到保持原来文件的权限、时间、软硬连接等。
无需特殊权限即可安装。
拥有优化的流程和比较高的文件传输效率。
可以使用shell(rsh、ssh)方式来传输文件。
支持匿名运行。
与 scp 相比,rsync 传输速度绝对远远超过 scp 的传输速度。
我们在局域网中经常用 rsync 和 scp 传输大量 mysql 数据库文件,发现 rsync 传输文件速度至少要比 scp 快 20 倍以上。
所以如果需要在 Liunx/Unix 服务器之间互传海量数据时,建议选择 rsync 进行传输。
3、运行模式(服务器)
rsync 有两种常用的认证方式,一种是 rsync-daemon 方式,另外一种是 ssh 方式(类似于 scp)。在平时使用过程,我们使用最多的是 rsync-daemon 方式。
这种模式是基于 C/S 模式的,在这种模式下,rsync 在后台启用了一个守护进程,这个守护进程在 rsync 服务器永久运行,用于接收请求传输文件,因此,客户端既可以把文件推送( push )给守护进程,也可以向守护进程拉取( pull )文件。rsync 的服务器模式非常适合为异地的中心备份服务器或数据异地存储库来使用。
案例介绍:
我们使用 pull 模式,我们有多个应用的服务器作为服务端,备份服务器作为客户端,备份服务器向每个应用服务器拉取需要备份的数据,放到相应的目录下面。
4、安装配置 rsync
1>安装 rsync
为了简便,我们这里直接使用 yum 进行安装即可。
yum install rsync -y
2>配置 rsync 服务端(应用服务器)
我们有一台云盘的服务器,IP为 10.0.2.15,我们在这台服务器上面进行服务端的配置,我们需要备份的路径为 /data/nextcloud,首先进行配置文件的设定,配置的详细解释在文中最后有介绍,我们设置的如下:
# cat /etc/rsyncd.conf
uid = root
gid = root
use chroot = yes
max connections = 10
pid file = /var/run/rsyncd.pid
log file = /var/log/rsync.log
transfer logging = yes
timeout = 900
ignore nonreadable = yes
dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2
[nextcloud]
path = /data/nextcloud
comment = pan.wzlinux.com
read only = yes
write only = no
hosts allow = 10.0.2.30
list = no
ignore errors
auth users = backup
secrets file = /etc/rsyncd.pass
增加密码认证文件:
# cat /etc/rsyncd.pass
backup:123456 #具有拉取数据的账号密码
chmod 600 /etc/rsyncd.pass
启动服务器:
systemctl start rsyncd.service
3>配置 rsync 客户端(备份服务器)
配置密码认证文件,这里只需配置密码即可,账号我们会在命令里面指定:
4>进行数据拉取测试
我们在备份服务器上面同样安装 rsync,然后进行如下指令进行数据拉取:
rsync -vzrtopg --delete --progress --password-file=/etc/rsyncd.pass backup@10.0.2.15::nextcloud /data/10.0.2.15/nextcloud
v是“--verbose”显示详细输出模式
z是“--compress”压缩模式
r是“--recursive”以子目录递归模式
t是“--times“用来保持文件信息时间
o是”--owner“用来保持文件的属主信息
p是”--perms“用来保持文件权限
g是”--group“用来保持文件的属组
--progress:用来显示数据镜像同步的过程
--delete:指定以rsync服务器为基准进行数据镜像同步,也就是要保持rsync服务器端目录与客户端目录的完全一致
--exclude:用于排除不需要文件传输的类型
/date/10.0.2.15/nextcloud:用户指定备份文件在客户端机器上的存放路径
5>客户端添加定时任务
# crontab -l
# 10.0.2.15 backup
00 01 * * * root /usr/bin/rsync -vzrtopg --delete --progress --password-file=/etc/rsyncd.pass backup@10.0.2.15::nextcloud /data/10.0.2.15/nextcloud
6>启动方法
systemctl start rsyncd.service
systemctl enable rsyncd.service