我的系统有很多东西需要备份,而我比较懒,不想自己动脑筋去写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"
分享到:
相关推荐
ubuntu 下用ssh 方式登入远程服务器的设置方法。
在Ubuntu下解决MySQL不能远程访问的问题.docx
关于Ubuntu18.04本地搭建远程git仓库的过程以及注意事项。通过实际的搭建并已经验证通过,是可行的。
ubuntu的SSH远程登陆
remastersys是一个简单实用的Ubuntu系统备份软件,在系统损坏后可直接安装后恢复到备份时的配置
利用win10 和vnc11 远程ubuntu18.04的桌面
Ubuntu下samba的使用 1. 安装samba服务器 2. 共享Ubuntu下的文件夹 (1) 手动配置方法 1) 打开/etc/samba/smb.conf。注:打开之前最好先备份一下 2) 在末尾添加如下配置项,假设需共享/home/flyfish/7800文件夹 ...
该向日葵为arm架构的版本,支持ubuntu64,arm64位的cpu。原本是向日葵适配的国产麒麟操作系统,支持的arm版本,安装方法:打开控制台,进入到安装包目录, sudo dpkg -i 安装包名称。如果缺乏各种依赖,可以用sudo ...
Ubuntu下使用支付宝UbuntUbuntu下使用支付宝u下使用支付宝
包括Ubuntu18.04的官方镜像文件,SDCardFormatter,Win32diskimager和VNC Viewer
Linux或ubuntu远程登录服务器的利器(取代xshell工具) MobaXterm功能特点: 1、多标签 2、终端字体颜色平和,没有过多颜色,不干扰视线 3、可以将ubuntu系统的窗口在window系统展示出来 4、可以可视化的查看远程...
ubuntu8.04使用手册,ubuntu8.04使用手册ubuntu8.04使用手册,ubuntu8.04使用手册,ubuntu8.04使用手册,
ubuntu版todesk远程工具安装包todesk_4.1.0_amd64.zip是一个在ubuntu16.04/18.04/20.04使用的远程桌面工具,安装用dpkg即可安装
Linux version 3.13.0-128-generic (buildd@lgw01-39) (gcc version 4.8.4 (Ubuntu 4.8.4-2ubuntu1~14.04.3) ) #177-Ubuntu SMP Tue Aug 8 11:40:23 UTC 2017
putty通过ssh远程连接ubuntu
Remastersys是备份Ubuntu的工具之一,使用它可以在Klikit 或Ubuntu中做两件事,一是进行系统备份,其备份可以选择包括你的个人资料,二是将备份做成可以自起动安装的Live cd 或DVD安装盘。
ubuntu系统备份与还原 两种方法,tar方式与cloner方式
笔者最近在自己的Ubuntu做了很多设置,其中包括花了大量的时间搭建tensorflow开发环境。为了防止系统遇到一些不确定因素导致崩溃,如果想要在系统崩溃之后花少量的时间搭建一个一模一样的环境,可以制作ISO镜像。
解决liunx端 Ubuntu20.04 系统下 Todesk 网络无法连接,二维码无法扫描,无法登录问题。
ubuntu使用VNC实现远程桌面.7z