ROS设备自动备份并通过FTP上传至服务器
在网上有很多的ros设备自动备份并上传至指定的FTP服务器
在网上有很多的ros设备自动备份并上传至邮箱的教程,也许是FTP服务快被淘汰了,上传到FTP的脚本只有两三个。我试了下,好像都不符合我的预期。经过多次测试,我在网上的脚本内做了一点点修改来满足我的需求。
1.需求
我需要ROS设备在每日的定点生成备份文件,并将该备份文件传输到指定的FTP服务器上。要是设备损坏后,可以直接将备份的文件在新的ROS设备上恢复数据,立即就能使用(网络线缆之类的是已经提前布置好)。
2.最终脚本
##自动备份并FTP上传
:local ts [/system clock get time]
:set ts ([:pick $ts 0 2].[:pick $ts 3 5].[:pick $ts 6 8])
:local ds [/system clock get date]
:set ds ([:pick $ds 7 11].[:pick $ds 0 3].[:pick $ds 4 6])
:local fname ("/name_".[/system identity get name]."-".$ds."-".$ts)
/system backup save name= ($fname.".backup");
/tool fetch address=10.1.*.* upload=yes user=ftpname password=ftppassword port=ftpport mode=ftp src-path=($fname.".backup") dst-path=($fname.".backup")
3.脚本学习过程及脚本解释
首先感谢东大网管在博客园的这个链接
https://www.cnblogs.com/itfat/p/14554470.html
还有saook在RSG人生观的这个链接
https://www.lxg2016.com/90.html
在ROS脚本中#是可以做为注释符号使用的
我首先做了一个本地备份的脚本
/system backup save name=($router."name".[:pick [/system clock get date] 7 11].[:pick [/system clock get date] 0 3].[:pick [/system clock get date] 4 6]);
这个脚本的成功,使得我知道了自动备份怎么做,就是做一个脚本,然后跑自动任务就行了。
然后就是将东大网管的上传FTP服务器的脚本跑了一次,也是可以用的。
本来想直接照抄saook在RSG人生观的脚本,不知道我哪里没有抄好,没有跑成功,再加上那个脚本太过复杂,我觉得麻烦。就自己将这个脚本中的变量使用方法学到了。改了一下。
4.脚本中需要注意的地方
-
1.脚本中变量使用,其实很简单,先声明一个变量xx
:local xx 变量的获取方式
这里变量的获取方式有多种
要是对变量xx不满意,还可以接着修改变量xx:set xx 变量的修改方式
注意:变量的后面都不要加标点符号,标点符号仅仅用于代码的执行
- 脚本的执行命令跟在终端执行的脚本一样,要带路径的执行
- 我犯错最多的地方在这里:执行脚本中备份默认是生成backup的文件,而ftp上传的时候必须是文件全名。这个地方很好理解,但是操作时候真的要注意
- 在写带路径的文件名时,有两个地方需要注意,一个是平时写路径时的“\”,要改用“/”,一个是文件名拼写时要用“.”这个做连接符。
5.感谢参考的文章
1: https://www.cnblogs.com/itfat/p/14554470.html
2: https://www.lxg2016.com/90.html