benjisail Asked: 2010-03-09 10:30:25 +0800 CST2010-03-09 10:30:25 +0800 CST 2010-03-09 10:30:25 +0800 CST 如何备份完整的 Centos 服务器? 772 几周前,我从专用服务器切换到 VPS。现在一切都在 VPS 上运行良好,我想关闭专用服务器并关闭我在托管公司的帐户。 为了安心和更安全,我想在停止服务器之前对其进行完整备份。 最好的方法是备份,如果我发现备份中需要某些东西,我可以浏览它。 命令行的最佳解决方案是什么? 更新 : 媒体:网络 backup centos 5 个回答 Voted Best Answer pehrs 2010-03-09T10:42:25+08:002010-03-09T10:42:25+08:00 最好的工具可能是转储,它是一个标准的 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 并执行类似的操作 tar -zcvpf /backup/full-backup-`date '+%d-%B-%Y'`.tar.gz --directory / --exclude=mnt --exclude=proc --exclude=tmp . 但是 tar 也不处理文件系统中的更改。 Rafael Bugajewski 2015-08-01T09:34:39+08:002015-08-01T09:34:39+08:00 如果您想从 Linux 备份到 Linux,我不会使用转储,因为当您需要访问备份文件中的某些内容时,它会很不方便。在大多数情况下,只需rsync通过 SSH 进行完整的系统备份就可以了: rsync -aAXv --delete-after --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} / user@server:backup-folder 这将保留所有重要信息,让您无需额外步骤即可浏览备份。 --delete如果您在同一个备份文件夹中多次运行此选项,您可能需要添加 rsync选项。在这种情况下,请确保源路径不以 结尾/*,否则此选项仅对源目录的子目录中的文件有效,而对直接驻留在源目录中的文件没有影响。 d34dh0r53 2010-03-09T10:41:46+08:002010-03-09T10:41:46+08:00 您要将备份存储在什么介质上?如果您通过网络备份,我会将 sshfs/nfs 挂载到源服务器上并运行类似的内容: tar cvjf /<remote_mnt>/<point>/source-030810-full.tar.bz2 /* --exclude=/proc --exclude=/dev --exclude=/sys --exclude=/tmp --exclude=/<remote_mnt> 请注意,尚未经过测试,只是我的一般想法,您可能希望排除更多或更少。 Rapekas 2014-11-16T12:39:22+08:002014-11-16T12:39:22+08:00 我使用来自 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 使用率过高。因为在这种情况下许多托管 VPS 可能会被重置,我建议监控 CPU 负载以终止 lftp 进程,防止您的服务器被主机所有者关闭。进程 lftp(和保管箱)的平均负载 >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: dump 实用程序可能无法在 OpenVZ VPS 或其他一些虚拟服务器上运行。 dani.jtk 2010-03-13T10:47:26+08:002010-03-13T10:47:26+08:00 你听说过巴库拉吗? Bacula 是一组开源、企业就绪的计算机程序,允许您(或系统管理员)跨不同类型的计算机网络管理计算机数据的备份、恢复和验证。Bacula 相对易于使用和高效,同时提供许多高级存储管理功能,可以轻松查找和恢复丢失或损坏的文件。在技术方面,它是一个开源、企业就绪、基于网络的备份程序。
最好的工具可能是转储,它是一个标准的 linux 工具,将为您提供整个文件系统。我会做这样的事情:
这将执行 / 的文件系统转储(确保您不需要转储任何其他挂载!),用 gzip 压缩它并将其 ssh 到远程服务器(backupserver.example.com),将其存储在 /backup/ . 如果您以后需要浏览使用还原的备份:
另一种选择,如果您无权访问转储是使用 tar 并执行类似的操作
但是 tar 也不处理文件系统中的更改。
如果您想从 Linux 备份到 Linux,我不会使用转储,因为当您需要访问备份文件中的某些内容时,它会很不方便。在大多数情况下,只需
rsync
通过 SSH 进行完整的系统备份就可以了:这将保留所有重要信息,让您无需额外步骤即可浏览备份。
您要将备份存储在什么介质上?如果您通过网络备份,我会将 sshfs/nfs 挂载到源服务器上并运行类似的内容:
请注意,尚未经过测试,只是我的一般想法,您可能希望排除更多或更少。
我使用来自 pehrs 的上述命令,但已针对 ftp 使用进行了修改。crontab 示例:
upload.x 包含 ftp 凭据和上传规则:
注意 1:当目标无法到达尝试重新连接时,lftp 可能会导致 CPU 使用率过高。因为在这种情况下许多托管 VPS 可能会被重置,我建议监控 CPU 负载以终止 lftp 进程,防止您的服务器被主机所有者关闭。进程 lftp(和保管箱)的平均负载 >1.33 的示例。不幸的是,我不记得初始代码的来源,感谢某人:
crontab
*/5 * * * * /home/cms/cron/loadmon.sh
注意 2: dump 实用程序可能无法在 OpenVZ VPS 或其他一些虚拟服务器上运行。
你听说过巴库拉吗?