概要:

将“小米摄像头”录制的视频转存至“群晖”,在“群晖”上与onedrive同步,同时根据onedrive的 1T空间限制(个人版或家庭版)进行文件转移,使onedrive存有最新的视频文件(1T大小),并将旧文件存放至另一位置(视情况保留或删除)。

这样一来,云盘和本地至少都有 1T 的视频在。

起因:

笔者需要将本地的录像文件留一个备份,以备不时之需。

家中有三个小米摄像头,它们都支持转存到群晖(有些型号会不支持,记得问好卖家)。正是因为这个,才买的小米摄像头,之前用小蚁摄像头,云存储一年的费用不少,而且是按照机器来收取,存储天数越长越贵,不划算。

一台设备一天下来大约8个g,群晖单盘有2t空间,算下来3台设备可存77天。

正好家里也有台群晖d218j,支持onedrive转存(好像所有群晖nas设备都支持)。我自己购买了onedrive家庭版,有个1T的空间。

开始操作:

第一步:设置好摄像头的转存文件夹,这一步在小米摄像头内操作,米家app里。多台摄像头记得放同一位置,方便一同与onedrive同步。

第二步:群晖内设置onedrive

将摄像头文件夹,我这的名称为xiaomi_camera_videos,与onedrive云端文件夹(新建一个,自己取名)同步,同步方式选择“双向”

我的设置

这样的话群晖本地的小米摄像头转存文件就能与onedrive同步了。

但是onedrive有空间限制,且满了不会自动删除旧文件,只会限制你的上传,这样的话,只能咱自己来搞了。

第三部:编写python脚本,加入任务计划程序中。

基本逻辑就是:设定一个阀值,在空间快满时,把旧的文件移动到另一个文件夹,释放onedrive的空间(因为选择了“双向同步”)。

代码如下:

import os

import shutil

import re

#输出和路径不能有中文,不然会在计划程序中报错。ssh里可以执行

def get_doc_size(doc):#获取文件大小,单位g,两位小数

size = 0.0

for root,dirs,files in os.walk(doc):

size += sum([os.path.getsize(os.path.join(root, file)) for file in files])

size = round(size/1024/1024/1024, 2)

return size

def transfer_file(path,n,x):#各参数:初始路径,转存文件数,转存路径

lists = os.listdir(path) #取目录下的文件保存到lists

lists.sort(key=lambda fn: os.path.getmtime(path + "/" + fn),reverse = True) # 按修改时间排序,正序

for i in range(1,n+1):# 获取最旧的n个非空文件

file = os.path.join(path,lists[-i])

if get_doc_size(file)==0:#如果文件夹大小为0,则删除

print('empty file,delete it'+str(lists[-i]))

os.remove(file)

n+=1#空文件则增加循环次数

else:#移动文件

shutil.move(file,x)

print('moving'+str(lists[-i]))

if get_doc_size('/volume1/homes/bb/xiaomi_camera_videos')>900:#阀值900g

#24为一天的视频量,任务计划程序可2天运行一次,可加大些

transfer_file('/volume1/homes/bb/xiaomi_camera_videos/5ce50c62ae61',50,'/volume1/homes/bb/b/transferonedrive/5ce50c62ae61')

transfer_file('/volume1/homes/bb/xiaomi_camera_videos/5ce50ca9f839',50,'/volume1/homes/bb/b/transferonedrive/5ce50ca9f839')

else:

print('sapce enough')

自己改里面的路径(需无中文)、转存数即可。将py文件保存,放到群晖的任意文件夹内(之后要调用)。

然后在群晖的“任务计划”中,添加执行脚本的代码。(默认已经配置好了python3)

我这为

python3 /volume1/homes/bb/b/dd.py

更改阀值,试运行一下。低于阀值时:显示空间足够超出阈值时:运行成功

大功告成。

技术总结:

中文路径、输出中文的问题没解决,就索性用英文了,问题不大,个人使用满足需求就好。

感谢阅读。

群晖python脚本_群晖、Python、小米摄像头、OneDrive应用案例相关推荐

  1. 路由器运行python脚本_写个Python脚本来登录小米路由器

    这个脚本写起来难度并不是很大,博主还是一步步的分析下,这样思路会比较清晰,下次遇到类似系统脚本写起来也更快速.好了,一起来分析分析. 首先看下小米路由器的登录界面 可以看到只需要输入密码即可登录,博主 ...

  2. 常用的python脚本_五个python常用运维脚本面试题实例

    一.用Python写一个列举当前目录以及所有子目录下的文件,并打印出绝对路径 #!/usr/bin/env python import os for root,dirs,files in os.wal ...

  3. php运行python爬虫_群晖系统中运行python爬虫程序

    重要:本文最后更新于2021-01-28 17:02:43,某些文章具有时效性,若有错误或已失效,请在下方留言或联系代码狗. 准备入手一台NAS,事先的学习是必须的,今天在VM虚拟机中安装好NAS后, ...

  4. java执行python脚本_使用Runtime.getRuntime().exec()在java中调用python脚本

    举例有一个Python脚本叫test.py,现在想要在Java里调用这个脚本.假定这个test.py里面使用了拓展的包,使得pythoninterpreter之类内嵌的编译器无法使用,那么只能采用ja ...

  5. 群晖docker火狐_群晖 篇一:群晖docker安装Bitwarden教程

    群晖 篇一:群晖docker安装Bitwarden教程 2019-04-07 18:17:54 22点赞 179收藏 29评论 小编注:此篇文章来自即可瓜分10万金币,周边好礼达标就有,邀新任务奖励无 ...

  6. python编写接口自动化脚本_简单的python http接口自动化脚本

    摘抄:今天给大家分享一个简单的python脚本,使用python进行http的接口测试,脚本很简单,逻辑是:读取excel写好的测试用例,然后根据excel中的用例内容进行调用,判断预期结果中的返回值 ...

  7. python能写什么脚本_你用 Python 写过哪些牛逼的程序/脚本?

    原标题:你用 Python 写过哪些牛逼的程序/脚本? [导读]:有网友在 Quora 上提问,「你用 Python 写过最牛逼的程序/脚本是什么?」.本文摘编了 3 个国外程序员的多个小项目,含代码 ...

  8. anaconda怎么运行python程序_第一个python程序,从安装python环境到人生第一个py脚本运行全过程...

    文章目录 前言一.安装python运行环境 1.官网https://www.python.org下载安装包.exe 2.安装python二.python模块下载 1.配置pip环境变量 2.下载pyt ...

  9. python脚本中执行另一个脚本_如何用python调用另一个python脚本?

    如果想要将已经设置好的内容,在转移到另一个位置要怎么做呢?小编能写到的方法有,照抄,复制,以及转移使用.在我们日常办公上是非常好理解的,就是ctr v,但是如果想在编程上,将某一位置拿去到别的项目上使 ...

最新文章

  1. 搞定Linux只要半年
  2. Visual Studio 2008 可扩展性开发(三):Add-In运行机制解析(下)
  3. json数组显示格式
  4. UWP Composition API - RadialMenu
  5. atitit.it企业管理 项目管理 中的 授权机制 的来源 君权神授 的一定合理性
  6. android sha1和签名证书的学习
  7. CentOS7.2 network.service NetworkManager.service 冲突
  8. 微信小程序弹框之获取输入内容(2)
  9. java动态数组大总结
  10. cheerio获取outerHTML
  11. IDEA git 切换分支注意事项(好文章!!)
  12. 小学计算机设备报表,小学信息技术教育及电教设备自查报告
  13. dvi黑屏解决方法_电视维修|电视机屏幕出现条纹该怎么解决?
  14. 谷歌Imagen,人工智能对语言更加深入理解
  15. 华为电脑浏览器主页被劫持
  16. 随机生成一个1 到100之间的整数,从键盘输入数字进行猜数,一共可以猜5次
  17. Thimax膳美师牛排机体验:做一份顶级牛排,简直0难度!
  18. html樱花飘落特效js
  19. Spring Security实现用户名密码验证的原理
  20. C语言-switch-case语句与多分支结构

热门文章

  1. Open62541 为硬件设备(PLC)构建OPC UA模型
  2. 修改hosts文件时可能遇到的问题以及解决方法
  3. 分享个WIFI 一键配置原理-以ESP8266为例
  4. js验证港澳居民通行证号码是否合规
  5. mysql外部架包_命令行编译带外部包依赖的java源文件 [以JDBC MySQL8为例]
  6. gromore穿山甲接入激励视频Android 原生
  7. 为什么Python不适合写游戏?
  8. python自动化下载_selenium+python自动化--文件下载弹窗处理(PyKeyboard)
  9. vs调试技巧(详细)
  10. 有符号数与无符号数之间运算问题探究