linux远程备份文件

时间:2022-01-14 15:24:20

1、建立服务器信任关系 

在两台机器的两个用户之间建立安全的信任关系后,可实现执行scp命令时不需要输入用户密码。
   
以下是在机器Clientroot和机器Serverroot之间建立安全信任关系的步骤:
    1.
在机器Clientroot用户执行ssh-keygen命令,生成建立安全信任关系的证书。 
       
 [root@Client root]# ssh-keygen -b 1024 -t rsa
        Generating public/private rsa key pair.
        Enter file in which to save the key(/root/.ssh/id_rsa): 

        Enter passphrase (empty for nopassphrase):            <-- 直接输入回车
        Enter same passphrase again:                         <--
直接输入回车
        Your identification has been saved in/root/.ssh/id_rsa.
        Your public key has been saved in/root/.ssh/id_rsa.pub.
        The key fingerprint is:
       49:9c:8a:8f:bc:19:5e:8c:c0:10:d3:15:60:a3:32:1c root@Client

          
注意:在程序提示输入passphrase时直接输入回车,表示无证书密码。
   
上述命令将生成私钥证书id_rsa和公钥证书id_rsa.pub,存放在用户家目录的.ssh子目录中。
    2.
将公钥证书id_rsa.pub复制到机器Serverroot家目录的.ssh子目录中,同时将文件名更换为authorized_keys

 [root@Client]#scp-p .ssh/id_rsa.pub root@192.168.3.206:/root/.ssh/authorized_keys
        
root@192.168.3.206's password:         <--输入机器Serverroot用户密码
       id_rsa.pub          100% |**************************|   218      00:00

       [root@Client root]# 
    在执行上述命令时,两台机器的root用户之间还未建立安全信任关系,所以还需要输入机器Serverroot用户密码。
   3. 
经过以上2步,就在机器Clientroot和机器Serverroot之间建立安全信任关系。下面我们看看效果:
       [root@Client root]# scp -p text 
root@192.168.3.206:/root
        text                100%|**************************|    19       00:00

2、编写备份脚本

先压缩文件夹/notesdata/app到压缩文件,之后再上传到备份文件服务器

#vi sync-bak.sh

TODAY="`date+'%Y%m%d%H'`"

#压缩文件

tar cfzP /notesdata/bak/sync_bak_${TODAY}.tgz /notesdata/app

#压缩文件

scp /notesdata/bak/sync_bak_${TODAY}.tgz root@192.168.3.206:/data/db_backup/

#清空本地一个月前的文件和备份文件
find  /notesdata/app/ -mtime 30 -name '*.log' -exec rm -f {} \;

find  /notesdata/bak/ -mtime 30 -name '*.log' -exec rm -f {} \;

3、设置定时任务

使用Linux的crontab,具体计划内容如下:

[oracle@Client:~]$ crontab -e

* 01 * * * /local/sh/sync-bak.sh

执行计划添加完毕后,建议使用root用户重启服务:

[root@:~]# /etc/init.d/crond restart