如何备份一个完整的Centos服务器?

几个星期前,我从专用服务器切换到VPS。 现在,一切运行良好的VPS我想closures专用服务器,closures我的帐户与托pipe公司。

为了安心,为了更安全起见,我想在停止之前对服务器进行完整备份

如果我发现在备份中需要一些东西,最好的方法就是可以浏览的备份。

什么是从命令行最好的解决scheme?

更新:

中等:networking

最好的工具可能是转储,这是一个标准的Linux工具,并会给你整个文件系统。 我会做这样的事情:

/sbin/dump -0uan -f - / | gzip -2 | ssh -c blowfish [email protected] dd of=/backup/server-full-backup-`date '+%d-%B-%Y'`.dump.gz 

这将做一个文件系统转储/(确保你不需要转储任何其他坐骑!),用gzip压缩它,并将其ssh压缩到远程服务器(backupserver.example.com),将其存储在/ backup / 。 如果以后需要浏览使用恢复的备份:

 restore -i 

另一个选项,如果你没有转储的权限是使用焦油和做类似的事情

 tar -zcvpf /backup/full-backup-`date '+%d-%B-%Y'`.tar.gz --directory / --exclude=mnt --exclude=proc --exclude=tmp . 

但是tar不能处理文件系统中的更改。

如果你想从Linux备份到Linux我不会使用转储,因为当你需要访问备份文件内的东西时,这是不方便的。 在大多数情况下,使用SSH通过rsync 进行完整的系统备份应该没问题:

 rsync -aAXv --delete-after --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} /* user@server:backup-folder 

这将保持重要的一切让您无需额外的步骤浏览备份。

我使用pehrs中的上述命令,但为了使用ftp而进行了修改。 Crontab示例:

 30 3 1 * * sudo /sbin/dump -0uan -f server-full-backup-root-`date '+%d-%B-%Y'`.dump / && gzip -1 /<path_to_backup_file>/server-full-backup-root-`date '+%d-%B-%Y'`.dump 50 * * * * lftp -f upload.x 

upload.x包含ftp证书和上传规则:

 open -u user,password -p 21 192.168.1.1 mirror -c -e -R /<path_to_backup_folder> /<path_to_remote_folder_without_trailing_slash> exit 

注意1: lftp可能会导致CPU使用率过高,当目标不可达时尝试重新连接。 由于许多托pipeVPS的可能会在这种情况下重置,我build议监视CPU负载杀死lftp进程,防止您的服务器closures主机的所有者。 处理lftp(和dropbox)的平均载荷> 1.33的示例。 不幸的是,我不记得最初的代码的来源,感谢有人:

Crontab */5 * * * * /home/cms/cron/loadmon.sh

 #!/bin/bash FROM_EMAIL_ADDRESS=cms trigger=1.33 load=`cat /proc/loadavg | awk '{print $1}'` response=`echo | awk -v T=$trigger -v L=$load 'BEGIN{if ( L > T){ print "greater"}}'` if [[ $response = "greater" ]] then killall dropbox lftp nice -n 19 sh /cms/.dropbox-dist/dropboxd sar -q | mailx -s "High load on server - [ $load ]" r***[email protected] fi 

注2:转储实用程序可能无法在OpenVZ VPS或某些其他虚拟服务器上运行。

你将要在什么媒体上存储备份? 如果您通过networking进行备份,我会在源服务器上安装我的目标sshfs / nfs并运行如下所示的命令:

 tar cvjf /<remote_mnt>/<point>/source-030810-full.tar.bz2 /* --exclude=/proc --exclude=/dev --exclude=/sys --exclude=/tmp --exclude=/<remote_mnt> 

请注意,还没有经过testing,只是我一般的想法,你可能想排除更多或更less的。

你听说过Bacula吗?

Bacula是一套开源的,企业级的计算机程序,允许您(或系统pipe理员)通过不同种类的计算机networking来pipe理计算机数据的备份,恢复和validation。 Bacula相对容易使用且高效,同时提供许多先进的存储pipe理function,可以轻松find并恢复丢失或损坏的文件。 从技术angular度而言,这是一个开源的,企业级的,基于networking的备份程序。