AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 120431
Accepted
benjisail
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 5 个回答
  • 107140 Views

5 个回答

  • Voted
  1. 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 user@backupserver.example.com 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 也不处理文件系统中的更改。

    • 29
  2. 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选项。在这种情况下,请确保源路径不以 结尾/*,否则此选项仅对源目录的子目录中的文件有效,而对直接驻留在源目录中的文件没有影响。

    • 11
  3. 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>
    

    请注意,尚未经过测试,只是我的一般想法,您可能希望排除更多或更少。

    • 3
  4. 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***s@gmail.com
    fi
    

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

    • 3
  5. dani.jtk
    2010-03-13T10:47:26+08:002010-03-13T10:47:26+08:00

    你听说过巴库拉吗?

    Bacula 是一组开源、企业就绪的计算机程序,允许您(或系统管理员)跨不同类型的计算机网络管理计算机数据的备份、恢复和验证。Bacula 相对易于使用和高效,同时提供许多高级存储管理功能,可以轻松查找和恢复丢失或损坏的文件。在技​​术方面,它是一个开源、企业就绪、基于网络的备份程序。

    • 2

相关问题

  • Exchange 2007 的备份解决方案

  • IIS 6.0 (Windows Server 2003) 备份的最佳实践?

  • 10TB数据和3台服务器的备份解决方案

  • 最佳混合环境(OS X + Windows)备份?[关闭]

  • 如何从 SQL Server 2008 中的备份中排除索引

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve