`
cristal
  • 浏览: 27457 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

Ubuntu下使用rsnapshot做远程备份

阅读更多
我的系统有很多东西需要备份,而我比较懒,不想自己动脑筋去写shell执行rsync,就用了rsnapshot,在Ubuntu下安装rsnapshot很简单:
$ sudo apt-get install 

剩下的就是配置rsnapshot了。

我有两台Ubuntu,一台叫backup.server用作备份,一台叫online.server,这台需要备份。
首先在两台机器上都建立备份的用户rbackup
$sudo useradd -d /home/rbackup
我要用backup.server去备份online.server,所以backup.server上的用户要登陆到online.server上去执行rsync命令。在backup.server上:
$ cd .ssh
$ ssh-keygen -t rsa
生成id_rsa和id_rsa.pub,注意这里不要输入密码,因为我们需要无密码去连接对方。然后把id_rsa.pub中的内容放到online.server上rbackup用户的信任列表中去,即拷贝id_rsa.pub的内容到online.server上rbackup用户的authorized_keys,如果没有这个文件,则创建一个。现在我们在backup.server上应该可以不提示密码就ssh到online.server了。

出于安全性考虑,没有密码的ssh被认为是极其不安全的,所以我们要限制一下online.server上从ssh登陆上来的rbackup用户的权限,这里通过修改online.server上rbackup的authorized_keys文件如下:

from="backup.server",command="/home/rbackup/validate-rsync.sh" ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA2x0QYNVJtF8h8oSlKFzpnPJPFHoi4IYl0Y60eYMb.... == rbackup@backup.server

这里告诉了online.server上的rbackup用户,当从ssh上登陆上来时,执行shell validate-rsync.sh这个脚本。好了,我们的这个validate-rsync.sh具体如下:
#!/bin/sh
case "$SSH_ORIGINAL_COMMAND" in
      *\&*)
        echo "Rejected 1"
        ;;
      *\;*)
        echo "Rejected 2"
        ;;
      rsync*)
        $SSH_ORIGINAL_COMMAND
        ;;
      *true*)
        echo $SSH_ORIGINAL_COMMAND
        ;;
      *)
        echo "Rejected 3"
        ;;
esac


$ chmod +x validate-rsync.sh

这时候如果你从backup.server上执行 ssh online.server应该直接返回"Reject 3",而不再能够登陆上去了。

另外,由于我要备份很多文件是需要root权限的,所以需要对rsync作一下包装,在online.server上执行:
$ sudo vi /usr/local/bin/rsync_wrapper.sh
然后输入以下脚本:
#!/bin/sh
/usr/bin/sudo /usr/bin/rsync "$@";


$ sudo chmod +x /usr/local/bin/rsync_wrapper.sh

为了能够让rbackup这个用户可以执行这条命令,我们还需要把rbackup加入到sudoer中去,在onlien.server上执行:
$ sudo visudo
加入下面这行
rbackup ALL=NOPASSWD: /usr/bin/rsync

这句话告诉系统,rbackup这个用户可以用root的权限来执行rsyn命令。

好了,这些做完以后,我们就可以开始配置rsnapshot了,在backup.server上执行
$ sudo vi /etc/rsnapshot.conf
去掉那些注释掉的cmd_xxx,当然前提是你需要有这些命令。比较重要的是下面几点:

1. interval部分,按照实际情况配置是需要按小时备份,还是按天,按星期等等
2. rsync_long_args --rsync-path=rsync_wrapper.sh --delete --numeric-ids --relative --delete-excluded,注意这里加入了--rsync-path=rsync_wrapper.sh,这里告诉rsnapshot,我们在online.server上运行的rsync是这个包装过的版本,即有sudo权限的。
3. 最后,就是那些backup points了,比如说:
    backup rbackup@online.server:/etc/ online.server/ exclude=mtab
    backup rbackup@online.server:/home/ online.server/ exclude=dummy
具体可以参考rsnapshot的文档。

现在测试一下吧:
$ rsnapshot hourly
这时候如果一切正常的话,在你的目录里就会有hourly.0/online.server这样一个目录,包含了那些你希望备份的东西。
好了,最后就是我们要让它定时执行,也就是编辑我们的cron,
$ crontab -e
30 19 * * * rsnapshot daily
这里我设定的是每天19:30分执行rsnapshot进行备份。你也可以编写一个脚本封装一下rsnapshot,让它执行完之后再把备份的log发到你的邮箱里去,就象下面这样:
#!/bin/sh
rm /home/rbackup/log/*
rsnapshot daily
cat /home/rbackup/log/rsnapshot | mail -s "rsnapshot backup log" "abc@foo.com"





分享到:
评论

相关推荐

    使用remastersys备份ubuntu

    使用 Remastersys 备份 Ubuntu Remastersys 是一个功能强大且易于使用的 Ubuntu 系统备份软件,它能够将当前系统的配置和数据备份到一个 Live CD/DVD 中,从而在系统出问题时可以直接安装并恢复到备份时的配置。 ...

    树莓派4B安装Ubuntu18.04 + vnc远程桌面相关资源

    在本资源包中,我们提供了在树莓派4B上安装Ubuntu 18.04 LTS(长期支持版本)所需的工具,以及设置VNC远程桌面访问的相关软件。 首先,`ubuntu-18.04.5-preinstalled-server-arm64+raspi3.img.xz`是Ubuntu 18.04 ...

    完美解决win10远程ubuntu18.08LTS.rar

    通过遵循这些步骤,你可以高效地在Win10环境下操作远程Ubuntu桌面,进行开发、测试或其他工作需求。这个压缩包文件"win10远程ubuntu18.08LTS"可能包含了上述过程的详细指南和配置文件,帮助你更顺利地完成远程连接。

    在Ubuntu下解决MySQL不能远程访问的问题.docx

    然而,在实际应用场景中,我们往往需要让其他机器能够远程访问MySQL数据库,这就要求我们对Ubuntu下的MySQL进行相应的配置修改。本文将详细阐述如何在Ubuntu下解决MySQL不能远程访问的问题,具体步骤分为三个部分:...

    ubuntu 12.04下ssh登入远程服务器

    ubuntu 下用ssh 方式登入远程服务器的设置方法。

    ubuntu的SSH远程登陆

    ### Ubuntu的SSH远程登录知识点详解 #### 一、前言 在现代的IT环境中,SSH(Secure Shell)作为一项重要的安全协议,被广泛应用于不同主机之间的远程管理与数据传输。Ubuntu作为一种流行的Linux发行版,其SSH远程...

    Ubuntu_18.04创建Git远程仓库.pdf

    关于Ubuntu18.04本地搭建远程git仓库的过程以及注意事项。通过实际的搭建并已经验证通过,是可行的。

    远程桌面到Ubuntu 虚拟机1

    本篇文章将深入探讨如何在Ubuntu虚拟机上设置远程桌面连接,以便使用Windows的远程桌面客户端(RDP)进行访问。 首先,我们需要在Ubuntu虚拟机上安装Ubuntu操作系统。Ubuntu是基于Debian的开源Linux发行版,提供了...

    Ubuntu系统备份用的脚本

    "Ubuntu系统备份用的脚本"正是为了解决这一需求,它允许用户轻松地备份当前系统状态,以便在出现问题时能够迅速恢复到正常工作状态,就像Windows中的GHOST工具一样。 首先,我们来理解“Ubuntu系统备份”的概念。在...

    UBUNTU备份与还原设置

    对于使用Ubuntu Linux操作系统的人来说,了解如何有效地备份系统变得尤为重要。 #### 二、备份命令详解 在Ubuntu系统中,`tar` 命令被广泛用于备份和恢复文件。下面我们将详细介绍如何使用`tar`命令进行系统备份:...

    liunx端 Ubuntu20.04 远程控制软件Todesk V4.1.0下载

    在Linux世界中,Ubuntu 20.04 LTS(Focal Fossa)是一个广泛使用的操作系统,尤其对于开发者和系统管理员而言。在这个版本中,有时我们需要远程控制我们的机器,以进行故障排查、系统维护或者协作工作。Todesk是一款...

    SeedUbuntu虚拟机使用手册1

    SeedUbuntu虚拟机使用手册1 SeedUbuntu虚拟机使用手册1是关于使用SeedUbuntu虚拟机的详细指南,本手册将指导用户从搭建实验环境到安装docker、创建镜像、使用容器、启动telnet服务等多个方面。 实验环境搭建 在...

    Ubuntu 下使用QT开发的串口程序

    在Ubuntu操作系统中,使用Qt开发串口程序是一个常见的任务,特别是在进行嵌入式系统开发或者设备通信时。Qt是一个强大的跨平台应用开发框架,支持多种操作系统,包括Linux。本篇文章将详细讲解如何在Ubuntu环境下...

    ubuntu arm64架构linux版本 sunloginclient向日葵远程控制安装包

    标题中的“ubuntu arm64架构linux版本 sunloginclient向日葵远程控制安装包”表明了这是一个专为基于ARM64架构的Ubuntu Linux系统设计的远程控制软件——向日葵(Sunlogin Client)的安装包。向日葵远程控制是一款...

    Linux或ubuntu远程登录服务器的终端利器:MobaXterm(可取代xshell工具)

    Linux或ubuntu远程登录服务器的利器(取代xshell工具) MobaXterm功能特点: 1、多标签 2、终端字体颜色平和,没有过多颜色,不干扰视线 3、可以将ubuntu系统的窗口在window系统展示出来 4、可以可视化的查看远程...

    xrdp完美实现Windows远程访问Ubuntu 16.04 - sinolover的专栏 - CSDN博客1

    5. 在Windows上,使用内置的远程桌面客户端输入Ubuntu服务器的IP地址,即可开始远程会话。 总结起来,虽然xrdp在Ubuntu 16.04上默认不支持Unity,但通过TigerVNC Server,用户可以享受原生Unity桌面的远程访问体验...

    Ubuntu 一键脚本:开启 Root 用户登录配置 SSH 远程连接,轻松管理远程服务器

    本一键脚本旨在简化 Ubuntu 系统下开启 Root 用户登录并配置 SSH 远程连接的步骤,帮助用户实现便捷的远程管理和操作。通过这一脚本,您可以快速设置 SSH 连接,方便进行远程服务器操作和管理。 适用人群: 拥有 ...

    putty远程连接ubuntu

    因此,在使用Putty远程连接之前,首先需要在Ubuntu上安装并配置OpenSSH服务端。 #### 1. 安装OpenSSH服务端 可以通过运行以下命令来安装OpenSSH服务端: ```bash sudo apt-get install openssh-server ``` 该...

Global site tag (gtag.js) - Google Analytics