您的位置:首页 > 其它

自动备份远程机器的脚本

2017-12-14 11:48 169 查看
上一章将ssh免密登陆的功能实现了。那么现在就将领导的需求完成吧。

准备工作

编写备份脚本测试脚本安装cron (一般都有安装,但是我这个奇葩服务器却没有安装,所以就来说明一下)生成定时任务基本就是上述步骤了。现在就上手做吧。1.
cd
一个目录,直接
touch
一个文件
bak_file.sh
然后对该文件进行编辑
touch bak_file.sh
vim bak_file.sh
小轩这里直接使用了
vim bak_file.sh
当编辑完成并
:wq!
的时候就会生成一个名为bak_file.sh的文件。效果是一样的
2. 编写脚本
#!/bin/bash# 远程复制目录到指定目录  copy files from remote directory to local directory# 声明一个变量用来表示要备份的目录(当然可以写成从控制台输入,这样脚本就更通用了)
remoteFileName=aaa# 调用scp命令,其中port为服务器(上篇中的机器A)开放的ssh端口号 ipaddress为服务器的ip地址(可以使用公网或局域网)
scp -Pprot -r admin@ipaddress:/home/public/$remoteFileName /home/hart/backup/# 当scp完成时,输出此信息
echo " -----------------------我是华丽的分割线---------------------"# 声明一个变量用来获取当前系统时间并格式化为yyyy年MM月dd日hh时mm分
date=$(date "+%Y年%m月%d日%H时%M分")# 将备份的目录进行打包 打包名为:aaa2017年12月15日10时21分备份.zip
zip -r remoteFileNamedate备份.zip $remoteFileName# 删除未打包目录
rm -rf $remoteFileName`编写完以上代码按ESC键输入(英文状态)
:wq!
回车保存
之后修改bak_file.sh文件的权限。
chmod u+x bak_file.sh
给当前用户添加执行权限3. 测试脚本(亲测可行~)
./bak_file.sh
接下来安装cron工具首先查看一下当前系统中有没有cron这个工具
crontab -u root -l
这个命令是用来查看 root 用户当前的定时任务列表的。如果出现:
-bash: crontab: command not found
则代表没有安装cron在centos中小轩直接用
yum -y install crontabs
进行安装这里还是简要说明一下 cron的使用方法吧。查看服务是否启动 : service crond status停止服务: service crond stop启动服务: service crond start重新加载配置文件: service crond reload给一个用户添加一条定时任务:crontab -u root -e 这样会进入编辑模式。只要会使用vim,vi的童鞋这里是没有问题的,问题是怎么写~这个待会说~删除用户的定时任务:crontab -u root -r 会删除所有哦上面说过这个命令了,查看用户定时任务列表:crontab -u root -l大概就这些吧。现在说一个怎么在这个crontab -u root -e 中添加任务。其实在/etc/crontab中写的很清晰了。来我们看看。“#”是注释 ,不多解释第一个”*”跟着连线可以看到可以输入数字0-59 意为 分钟第二个”*”跟着连线可以找到可以输入数字0-23 意为 小时第三个”*”跟着连线可以找到可以输入数字1-31 意为 天第四个”*”跟着连线可以找到可以输入数字1-12 意为 月份第五个”*”跟着连线可以找到可以输入数字0-6 意为 每一周的天数 周日为0或7 或者直接输入 sun,mon,tue,wed,thu,fri,sat意思就是周几~~既然这么简单明了,那就好办了。像小轩。则写了一条
0 0 15 * * /home/hart/can-not-delete/bak_file.sh
意为每月15号0时0分执行/home/hart/can-not-delete/bak_file.sh这个脚本。对就是这样写。注意!每个”*”之间都要有一个空格,最后一个”*”与脚本之间也有空格不然会报错的哟:此时输入y可以进行修改。如果输入n则会生成一个文件在/tmp/目录下面。以crontab.*为文件名。嗯到此定时任务完成。总结:此次编写是现学现卖。首先以上脚本没有什么扩展性,只是为了完成当前的一个任务而做。其实可以将scp的相关信息参数化,将要保存的路径也参数话,不过可以设置成不传参,使用默认值即可。没有做验证。不能保证scp时不出现问题。这是逻辑中的bug。还有待完善。此次共用到了scpcronzipdu -sh fileNamedatentpdate -u ntp.api.bz -> 网络时间同步等命令进行辅助操作。之后可能还会也一个脚本用来正则匹配文件名,删除指定字符串格式的文件。即清理备份文件~继续学习~mark~~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  vim 服务器 脚本 备份