主要思路就是使用scp命令 + linux定时执行任务。

目标:2台服务器,A为主服务器,B为备份服务器,需要每天中午12点将A上的文件备份到B上。

1.首先在A上安装except

一路yes下去即可

yum install expect

2.编写脚本

这里给个示例

要传的文件在A服务器的/home/20181025/目录下

filepath=/home/20181025/

echo "`date +%Y%m%d` start upload......"

echo "`date +%Y%m%d` start upload......" > /home/import.log

sleep 5s

#B服务器所用账号的密码

password='**********'

echo "start copy datafile from remote path..."

echo "start copy datafile from remote path..." >> /home/import.log

/usr/bin/expect <

#设置超时时间

set timeout 10

#-r 为 递归复制整个目录,即现在会将/home/20181025/整个文件夹拷贝过去

#-p 为保留源文件权限

#顺便提下 -P 22 可以修改传输端口,不写默认为22

#root为B上的用户账号

#/home/ 为传输到的目录,即A上的/home/20181025/整个文件夹会被放到B上的/home/文件夹下

spawn scp -r -p $filepath root@xx.xx.xx.xx:/home/

expect "*assword:"

send "$password\r"

send "exit\r"

expect eof

EOF

if [ $? = 0 ]; then

echo "datafile copy successful!"

echo "datafile copy successful!" >> /home/import.log

else

echo "datafile copy failed!"

echo "datafile copy failed!" >> /home/import.log

fi

编写完脚本后上传到A上,当然直接在A上写的就省事了。

3.修改格式

如果你是在windows上编写的脚本,那么就需要注意上传到服务器上的脚本格式了.

这里假设脚本文件为 1.sh,上传到A上后的位置为 /home/1.sh

(1)进入编辑界面

vim /home/1.sh

(2)输入 :

:

可以看到最下方出现了一个 :

(3)输入 set ff 并回车

set ff

就可以查看到当前文件的格式了,如果不是unix而是dos的话就需要修改下格式了。

(4)修改格式

先输入

:

然后再

set ff=unix

回车,即可

4.修改脚本权限

相信这个不用多说

chmod 777 /home/1.sh

然后在执行脚本前需要我们手动执行下scp命令,因为第一次连接时需要进行授权。

5.授权

将你脚本中的scp 那一行拷贝出来

scp -r -p /home/20181025/ root@xx.xx.xx.xx:/home/

回车

按照提示输入密码和yes。顺便查看下文件夹是否传过去了,传过去了话就删了,下一步要测试脚本。

6.测试执行脚本

cd /home

./1.sh

看下脚本是否能正常执行

因为/home/20181025/ 文件夹中只有一个123.txt文件,所以如下方所示,传送成功,然后到B服务器的/home/ 目录下查看是否存在 /20181025/ 文件夹 和 /20181025/123.txt 文件。

恩,成功传过来了呢

然后看下A服务器上的/home/import.log 日志文件是否记录了日志。

7.计划任务

这里直接利用linux的计划任务

crontab -e

编辑文件,添加如下代码

代表每天12点执行一次1.sh脚本

00 12 * * * /home/1.sh

时间示例(可自行设置执行时间):

43 21 * * * 每天的21:43 执行

15 05 * * *    每天的05:15 执行

0 17 * * * 每天的17:00 执行

0 17 * * 1 每周一的 17:00 执行

0,10 17 * * 0,2,3 每周日,周二,周三的 17:00和 17:10 执行

0-10 17 1 * * 毎月1日从 17:00到7:10 毎隔1分钟 执行

0 0 1,15 * 1 毎月1日和 15日和 一日的 0:00 执行

42 4 1 * *     毎月1日的 4:42分 执行

0 21 * * 1-6   周一到周六 21:00 执行

0,10,20,30,40,50 * * * * 每隔10分 执行

*/10 * * * *        每隔10分 执行

1 * * *         从1:0到1:59 每隔1分钟 执行

0 1 * * *         1:00 执行

0 */1 * * *        毎时0分 每隔1小时 执行

0 * * * *         毎时0分 每隔1小时 执行

2 8-20/3 * * *      8:02,11:02,14:02,17:02,20:02 执行

30 5 1,15 * *       1日 和 15日的 5:30 执行

10.30更新

修改脚本,添加是否授权部分。

filepath=/home/20181025/

echo "`date +%Y%m%d` start upload......"

echo "`date +%Y%m%d` start upload......" > /home/import.log

sleep 5

password='xxxxx'

echo "start copy datafile from remote path..."

echo "start copy datafile from remote path..." >> /home/import.log

/usr/bin/expect <

set timeout 10

spawn scp -r -p $filepath root@xx.xx.xx.xx:/home/

expect {

"(yes/no)?"

{

send "yes\n"

expect "*assword:" {send "$password\n"}

}

"*assword:"

{

send "$password\n"

}

}

send "exit\n"

expect eof

EOF

if [ $? = 0 ]; then

echo "datafile copy successful!"

echo "datafile copy successful!" >> /home/import.log

else

echo "datafile copy failed!"

echo "datafile copy failed!" >> /home/import.log

fi

定时从linux获取文件,Linux 使用scp命令定时将文件备份到另一台服务器相关推荐

  1. linux远程获取文件,Linux下实现获取远程机器文件

    创建公钥秘钥实现无密码登录后即可获取到文件内容了!! A:xxx.xxx.6.xxx B:xxx.xxx.xxx.x 一.创建 A机器 ssh-keygen -t rsa 二.拷贝--将生成的公钥复制 ...

  2. linux目录为root所有文件,linux获取文件所有目录/文件夹的例子linux操作系统 -电脑资料...

    下面我给大家整理了两种比较实用的方法,如我们可以使用dirname来获取文件路径或者使用shell命令来获取路径,希望例子对大家有帮助, 方式一:使用" dirname" 去获得( ...

  3. linux生成文件清单,Linux 获取文件名称生成列表 txt - create_filelist

    Linux 获取文件名称生成列表 txt - create_filelist 1. find /home/strong/MOTChallenge/MOT16/MOT16/train/MOT16-04/ ...

  4. linux生成一个list文件,Linux 获取文件名称生成列表 txt - create_filelist

    Linux 获取文件名称生成列表 txt - create_filelist 1. find /home/strong/MOTChallenge/MOT16/MOT16/train/MOT16-04/ ...

  5. linux sftp怎样支持通配符,linux上的sftp与scp命令

    linux下的sftp与scp命令 第一个(sftp安全文件传输)是一个类ftp的客户端程序,它能够被用来在网络中传输文件.它并不使用FTP守护进程(ftpd或wu-ftpd)来进行连接,而是有意义地 ...

  6. linux剪切到另一个文件夹,linux下文件夹操作常见命令如创建、复制、剪切、重命名、清空和删除命令 实例说明...

    linux下文件夹操作常见命令如创建.复制.剪切.重命名.清空和删除命令 实例说明,在home目录下有wwwroot目录,wwwroot下有sinozzz目录,即/home/wwwroot/sinoz ...

  7. Linux学习——Linux常用文件和目录管理命令(超详细)

    Linux常用文件和目录管理命令 JunLeon--go big or go home 前言: Linux系统文件和目录管理是必须学会的命令,在Linux系统目录中/tmp目录是用来存放临时文件的目录 ...

  8. linux grep文件过滤与分割命令

    linux grep文件过滤与分割命令 文章目录 linux grep文件过滤与分割命令 1.grep命令 选项 grep命令常见用法 grep递归搜索文件 2.split命令 选项 实例 3.loo ...

  9. linux字符查找命令,linux查找文件或字符串的命令

    1. linux下面用于查到的命令有哪些? 是不是有很多呀,这个我还没做过统计和调查,不过这篇博客只介绍grep与find的最基本应用. grep和find功能都是相当的强大,这里也只是介绍这两个命令 ...

最新文章

  1. android-sdk-windows下载版
  2. Spark学习之路 (五)Spark伪分布式安装
  3. 使用握手信号实现跨时钟域数据传输
  4. OpenTSDB 造成 Hbase 整点压力过大问题的排查和解决
  5. 贪婪算法在求解最小生成树中的应用(JAVA)--Prim算法
  6. 万能文件在线预览项目,开源!
  7. NOI数据结构:后缀树
  8. 小白如何学3D建模?从零开始变大神,学习记录手册(必备)
  9. Delphi 的一些函数(Windows相关)
  10. 人设倒了扶起来:Lazarus 组织利用含木马的IDA Pro 攻击研究员
  11. Linux查找link文件,Linux下查找一个文件的所有软硬链接
  12. matlab仿真环境运行,第7章 Simulink仿真环境.ppt
  13. 服务器安装找不到RAID卡驱动,DELL R430安装WINDOWS 2008 R2 RAID卡无驱动之无法识别sas硬盘的解决方法...
  14. LWIP应用开发|DNS域名解析
  15. 关于MAC地址修改和扩展以太网
  16. 原来手机还能当做扫描仪?安卓苹果都可以,纸质稿轻松电子化
  17. 专升本-计算机公共课考点(4)—— 电子表格处理软件 Excel 2010
  18. 数据结构与算法学习笔记4:递归+分治法
  19. 搭配购买——C++详解
  20. 联想笔记本Manjaro dde 18 安装疑难杂症解决

热门文章

  1. Mini音乐播放器【简单版】(附源码)
  2. OpenAI披露最新研究成果:AI训练如何扩展到更大规模?
  3. Ubuntu 上 Node.js 安装和卸载
  4. 2月1日学习内容整理:算法
  5. 读写应用程序数据-SQLite3
  6. Mysql 的源码包安装
  7. 【Windows编程】系列第三篇:文本字符输出
  8. [Apache]网站页面静态化与Apache调优(图)
  9. 一个苏州IT人的5年挨踢经历-------经历篇(之三)
  10. 什么是bps (bits per second)?—Vecloud微云