zoukankan      html  css  js  c++  java
  • CentOS上备份远程机器

    在网上找了一篇文章,说是《Linux操作系统上进行自动备份》。我按照里面的内容进行操作,却没办法做定时任务。现在整理一下那篇文章的内容,一是简化一下描述,二是防止链接失效。

    首先介绍一下背景:

    Server1是部署web应用的机器,或者说是需要进行备份的机器。Offsite storage server是备份存放的机器,以下简称为Offsite。

    1. 以有权限ssh到server1的用户,登录到Offsite上

    2. 确保Offsite上OpenSSH已经安装,并检查其版本,保证版本较新(4.3左右)

    1 [Offsite]$ ssh -V

    3. 在Offsite上生成公私密钥

    1 [Offsite]$ ssh-keygen -t dsa
    2 Generating public/private dsa key pair.
    3 Enter file in which to save the key(/home/accountname/.ssh/id_dsa):直接输入回车即可
    4 Enter passphrase (empty for no passphrase):输入一个高强度密码
    5 Enter same passphrase again: 再一次输入同一个密码
    6 Your identification has been saved in /home/accountname/.ssh/id_dsa.
    7 Your public key has been saved in /home/accountname/.ssh/id_dsa.pub.
    8 The key fingerprint is:
    9 7e:5e:b2:f2:d4:54:58:6a:fa:6b:52:9c:da:a8:53:1b accountname@offsite

    上述代码中,-t 后面的dsa是一种数字签名算法,也可以改成OpenSSH支持的其他算法。上面代码中第三行,指定了生成的公私密钥文件的位置,accountname是当前Offsite的登录用户。如果想用默认路径,直接回车即可。最后生成的私钥文件是id_dsa, 公钥文件是id_dsa.pub。

    4. 复制公钥文件到需要备份的机器上

    这一步就是把Offsite上的id_dsa.pub复制到Server1上。具体操作如下:

    1 [Offsite]$ scp Offsite上的id_dsa.pub accountname@server1的ip:Server1某个路径
    2 accountname@server1.com's password: 输入accountname登录server1的密码,不是刚才生成公私密钥的密码

    第一行代码中,scp后面第一个参数指定公钥文件(全路径), 第二个参数指定远程机器的登录用户名(accountname)、ip地址(server1的ip地址)以及公钥复制过去后存放的位置和名字(Server1的某个路径)。

    5. 将Offsite的公钥添加到server1的已授权密钥列表中

    1 [Server1]$ cat Offsite.pub >> /home/accountname/.ssh/authorized_keys
    2 [Server1]$ chmod 700 /home/accountname/.ssh
    3 [Server1]$ chmod 600 /home/accountname/.ssh/autorized_keys

    假如没有authorized_keys这个文件,可以先创建,但是位置必须是在/home/accountname/.ssh下面。 此时,从Offsite上复制过来的公钥就可以删掉了。

    6. 安装keychain

    安装方法参考我的博文《CentOS安装keychain》。

    7. 在Offsite上找到/home/accountname/.bash_profile, 在最后添加这样一句代码

    1 eval `keychain --agents ssh --eval id_dsa` || exit 1

    注意代码中是反引号,不是单引号。保存文件。

    重启Offsite,登录之后,会出现一个很小的窗口,需要输入刚才ssh-keygen创建公私密钥时输入的密码。登入系统后,就可以不再输入密码就能用OpenSSH从远程机器上复制内容到本地了。这样,可以在Server1上写备份脚本和删除脚本,在Offsite上远程调用备份脚本,并把备份复制到Offsite上,再执行Server1上的删除脚本。为了方便,可以在Offsite上写一个脚本,这样在Offsite上执行一个脚本,剩下的工作就是检查备份情况了。Offsite上的脚本大概是这样的:

    #!/bin/bash
    ssh accountname@server1的ip server1的脚本
    scp accountname
    @server1的ip:server1的备份文件 本地路径
    ssh accountname
    @server1的ip server1的脚本

    遗憾的是,我把Offsite上的脚本设置为crontab自动执行,结果一直提示我说Permission Denied,Try again.不知道是怎么回事。大家谁知道,一定要告诉我哦。

  • 相关阅读:
    HTML link标签media参数
    初始化一个本地GIT仓储
    总结一下js的原型和原型链
    根据用户注册信息推荐 代码部分
    冷启动问题概述
    概率图模型
    LFM 隐语义模型
    item Collaborative Filtering
    推荐系统评测
    user Collaborative Filtering
  • 原文地址:https://www.cnblogs.com/yuepeng/p/1857539.html
Copyright © 2011-2022 走看看