刚上线的服务器需要备份日志,要备份到另一台服务器上去,为了减少工作量,采用linux的定时任务去自动执行。因服务器都是linux的,因此采用linux的远程复制scp命令。但这里涉及到一个问题,就是scp命令执行时需要输入密码,在网上大概搜集了下有两种方法:①一种是采用except方法(会存储明文密码);②采用ssh生成密钥的方式。这里我采用第二种方式。耗时两天,中途遇到各种问题,不过总算解决了

备份方式:拷贝前一天的日志文件到备份服务器,再压缩后删除复制的本地文件。日志文件每天都会产生,格式都为access_20151214类似的文件名。

#首先用变量保存前一天的日期:

ngnix_day=$(date -d last-day +%Y%m%d)

接着备份文件

scp root@192.168.1.240:/logdata/access_$ngnix_day.log /logdata/nginxlog/

(scp... 源文件  目标路径)

将复制的日志文件压缩后再删除源文件(--remove-files)

tar -czf access_$ngnix_day.tar.gz access_$ngnix_day.log --remove-files

到这里已经完成备份操作

下面是实现scp无密码登录

1、在 A 上运行 ssh-keygen -t rsa 在/root/.ssh 下生成id_rsa 和 id_rsa.pub 两个文件

在/root/.ssh下复制备份一份id_rsa.pub 命名为 id_rsa.pub.A

2. 在 B 上也同样运行 ssh-keygen -t rsa

3、在 B 的 /root/.ssh 下创建authorized_keys文件 把A 中 id_rsa.pub.A 文件 传到 B /root/.ssh 下

通过 cat 命令 把id_rsa.pub.A 写到 authorized_keys 文件中

scp ./id_rsa.pub.A  B的IP:/root/.ssh

cat id_rsa.pub.A  >>  authorized_keys

测试:最终从B服务器拷贝文件到A上,就无需输入密码了

在生成密钥的过程中,一直Enter即可,否则还是需要输入设置的密码

=============================================================

下面是具体的源码,很简单的功能:

#!/bin/bash

ngnix_day=$(date -d last-day +%Y%m%d)

node_day=$(date -d yesterday +%Y-%m-%d)

#backup xx.172.129.xx node4

ssh root@xx.172.129.xx "sh /logdata/sh/node4_backup.sh"

sleep 1m

scp root@xx.172.129.xx:/logdata/access_$ngnix_day.tar.gz /logdata/nginxlog/node4-access_$ngnix_day.tar.gz

scp root@xx.172.129.xx:/logdata/node1-$node_day.log /logdata/nodelog/node4-node1-$node_day.log

scp root@xx.172.129.xx:/logdata/node2-$node_day.log /logdata/nodelog/node4-node2-$node_day.log

scp root@xx.172.129.xx:/logdata/node3-$node_day.log /logdata/nodelog/node4-node3-$node_day.log

date

sleep 1m

date

if [ -f /logdata/nodelog/node4-node1-$node_day.log ];

then ssh root@xx.172.129.xx "rm -f /logdata/node1-$node_day.log";

else

echo "The node4-node1-$node_day.log is not exists!" >>/logdata/sh/node.txt

fi

if [ -f /logdata/nodelog/node4-node2-$node_day.log ];

then ssh root@xx.172.129.xx "rm -f /logdata/node2-$node_day.log";

else

echo "The node4-node2-$node_day.log is not exists!" >>/logdata/sh/node.txt

fi

if [ -f /logdata/nodelog/node4-node3-$node_day.log ];

then ssh root@xx.72.129.xx "rm -f /logdata/node3-$node_day.log";

else

echo "The node4-node3-$node_day.log is not exists!" >>/logdata/sh/node.txt

fi

=============================================================

问题:

①、第一次执行scp的时候会出现warning,这时候要输入“yes”。所以脚本编写完一定要手动执行一遍,防止定时执行失败

②、在win下编写shell时,换行符为:

,而在linux下为:

,因此在win下编写的脚本在linux下运行会报错,尽量避免这个问题。

相关问题说明  http://www.myexception.cn/operating-system/1616889.html

linux远程备份视频教程,linux实现自动远程备份(scp+ssh)相关推荐

  1. linux运维视频教程 linux培训视频

    马哥2016全套视频 linux运维视频教程 linux培训视频 http://edu.51cto.com/course/course_id-5524.html http://edu.51cto.co ...

  2. linux双机(多机)自动互备份方案

    我们公司有两台LINUX服务器,每个服务器只有一个硬盘.所以备份的问题就显得特别重要.我们装有mysql数据库.当然同时也要解决mysql备份的问题. 目   的:host 机器(最终所有备份都在其上 ...

  3. mysql自动定时备份数据,mysql数据库自动定时备份脚本

    1.shell脚本如下: Now=$(date +"%d-%m-%Y") File=/tmp/mysqldump238CEM/MysqlDumpFile238CEM-$Now.sq ...

  4. linux pdf转视频教程,Linux下PDF操作与转换

    如果说PDF是电子纸张,那么pdftk就是电子起钉器.打孔机.粘合剂.解密指环和 X光镜片.Pdftk是一个简单的工具,可以对PDF文档进行各种日常操作.Pdftk可以让你简单而自由地操作PDF.它不 ...

  5. linux源代码分析视频教程,linux源代码分析方法谈

    Linux的最大的好处之一就是它的源码公开.同时,公开的核心源码也吸引着无数的电脑爱好者和程序员:他们把解读和分析Linux的核心源码作为自己的最大兴趣,把修改Linux源码和改造Linux系统作为自 ...

  6. linux配置dns 视频教程,linux下DNS配置视频

    yaoxinrisk 于 2013-12-02 20:07:11发表: 现在都打不开了 657129880@qq.co 于 2013-04-21 18:01:29发表: 谢谢分享!!! qwertpa ...

  7. suse linux 备份,suse linux利用scp实现自动远程备份

    在服务器本机上备份数据,一旦该机器硬盘出现故障,如果事先没有备份,数据的恢复将会耗时耗力,甚至严重时将彻底破坏而无法重现天日.远程手动备份数据费时费力且不及时,到机房现场备份再取回数据也比较麻烦.最好 ...

  8. linux 备份mysql并上传_实现Linux中Mysql数据库自动备份并上传到远程FTP服务器

    这篇文章很有分享价值,因为我们在实际的生产环境中需要将数据库进行自动备份,然后上传到指定的位置,当然也可以像以下文章中所讲的一样,上传到你指定的FTP服务器中,从而实现Mysql数据库自动备份并上传到 ...

  9. [linux 技巧] 使用 screen 管理你的远程会话(转载)

    linux 技巧:使用 screen 管理你的远程会话 转载地址: https://www.ibm.com/developerworks/cn/linux/l-cn-screen/  你是不是经常需要 ...

最新文章

  1. Hololens2-Unity3D开发(一)
  2. MATLAB中的三角函数单位问题
  3. python【蓝桥杯vip练习题库】ALGO-234第五次作业:字符串排序
  4. 几种移动开发技术的比较和选型
  5. 【中级软考】UML图(Unified Modeling Language统一建模语言、标准建模语言)
  6. Mysql 索引 n-gram分词引擎使用
  7. python filestorage对象怎么转化成字符串_Python面试的10个常见问题及答案,检验你的学习成果吧!...
  8. HIbernate的三种状态
  9. C语言试题七十之请编写函数判断年份是否为闰年
  10. 用SQL语句查看数据库数据量的大小
  11. Hadoop--xsync分发脚本
  12. 窗体传值 父子窗体传值情况 c# 1231
  13. 进程间通信(IPC)之内存映射mmap和共享内存shm
  14. 韩国浦项化学在中国斥资超2800亿韩元投建电动车电池材料厂
  15. Winform 显示Gif图片
  16. 以太坊 智能合约IDE 在线 Solidity IDE
  17. PAT A1029 Median (25 point(s)) __two pointers
  18. 免费实用的录屏工具!支持全屏、特定窗口、选定区域录制,支持添加水印、嵌入摄像头!
  19. 轻松拥有自己的站内搜索引擎
  20. 《资治通鉴-卷四(一)

热门文章

  1. WebSockets与服务器发送的事件/ EventSource
  2. android okhttputils传数组,okhttp传递数组参数
  3. win11WiFi无法连接网络怎么办 Windows11WiFi无法连接网络的解决方法
  4. win10电脑一开机提示拒绝访问怎么办
  5. mybatis当输入参数有多个时的解决方案,Map类型,索引引用输入参数,map输出
  6. maven伺服搭建_Maven私服搭建
  7. ❤️Java面试高频词《多线程》(建议收藏)❤️
  8. 结构体04:结构体嵌套结构体
  9. 实验4-1-9 猜数字游戏 (15 分)
  10. mysql之为表添加一个字段并设定默认值