Upload Video To the BaiduDisk In China - TheCrypt0/yi-hack-v4 GitHub Wiki

先上传到服务器 在由服务器上传到百度云

先scp 上传到服务器,再 bypy上传

步骤:

小蚁摄像机所在服务器准备工作

scp需要秘钥 先生成秘钥 ,这里使用的ssh客户端是嵌入式专用的 dropbear, 使用它来生成秘钥 dropbearkey

设置主目录
HOME=/mnt/HD_a2/root
mkdir -p $HOME

mkdir ~/.ssh
cd ~/.ssh
dropbearkey -t rsa -f key
dropbearkey -f key -y | head -n2 | tail -n1 >key.pub

然后拷贝公钥到服务器
ssh -i /mnt/HD_a2/root/.ssh/key [email protected]
然后就可以无秘钥了
上传小蚁视频到阿里云服务器

位于/tmp/sd/record/下面待拷贝的文件的文件结构

2020Y10M05D11H
  1.mp4
  2.mp4

任务队列


30 * * * * script/file_upload.sh

注意这里需要自行启动crond任务,脚本里面的不生效

script/file_upload.sh 内容


脚本
    #!/bin/sh
    echo 'start'
    DATE=`date +%Y_%m_%d_%H`
    dic=`find /tmp/sd/record/* -name '20*H' -mmin +60 -mmin -120`
     #dic='/tmp/sd/record/2020Y10M12D14H'
    for file in ${dic}     //去掉空行
       #dicname=`echo $file|awk -F '\/' '{print $5}'`
      do
       echo 11
       echo ${file}

       res=`scp -P 22 -i ~/.ssh/id_rsa -r  $file [email protected]:/root/yi-test$file`
       if [ -z $res ]
           then
           echo $file >> ~/upload_log/${DATE}_upload.log
         fi

     done

scp是全量上传。 因为scp重复递归拷贝一个文件夹的时候如果之前已经拷贝过了,那么就会在原来的文件夹下面重新创建一个文件夹然后继续递归拷贝,类似于

- 2020Y10M05D11H
  -2020Y10M05D11H
     1.mp4
     2.mp4
     3.mp4
  1.mp4
  2.mp4

,为了避免这样,需要选择已经稳定了不需要增加视频的文件夹

观察下面的文件结构

drwxr-xr-x    2 root     root         32768 Oct  5 04:00 2020Y10M05D11H
drwxr-xr-x    2 root     root         32768 Oct  5 05:00 2020Y10M05D12H
drwxr-xr-x    2 root     root         32768 Oct  5 06:00 2020Y10M05D13H
drwxr-xr-x    2 root     root         32768 Oct  5 06:48 2020Y10M05D14H
drwxr-xr-x    2 root     root         32768 Oct  5 07:57 2020Y10M05D15H
drwxr-xr-x    2 root     root         32768 Oct  5 08:52 2020Y10M05D16H
drwxr-xr-x    2 root     root         32768 Oct  5 10:00 2020Y10M05D17H
drwxr-xr-x    2 root     root         32768 Oct  5 11:00 2020Y10M05D18H
drwxr-xr-x    2 root     root         32768 Oct  5 12:00 2020Y10M05D19H

可以观察出来,不能拷贝最新的文件夹,因为这样会重复拷贝,可以拷贝前1个小时到2h的文件夹,因为已经稳定了,摄像机不会再往里面写入视频了, 计划任务每隔一个小时执行一次 这样每次拷贝的时间区间都是间隔1个小时 比如下面这样:

待拷贝的视频获取区间   任务执行时间
10:30-11:30      12:30
11:30-12:30      13:30
....

这样拷贝的时候都是稳定的了 这样就实现了把新的视频拷贝到阿里云了

阿里云服务器上传到百度云

上传需要解决的问题是 阿里云磁盘大小有限 ,需要删除已经上传过上百度云的文件。

所以需要定期上传 定期删除 文件。

借助bypy python 插件可以上传到百度云

先初始化,可以网上查询。

任务队列

每小时的50分钟市话开启上传任务 ,直接调用即可。bypy是增量上传,自己会对比hash值,skip过重复文件

50 * * * *  /usr/bin/python /usr/local/bin/bypy upload /root/yi-test/tmp/sd/record/ record/  > /dev/null 2>&1

注意这里 直接运行

bypy upload /root/yi-test/tmp/sd/record/ record/  > /dev/null 2>&1

是不会执行的 因为需要写全路径 可以通过service crond status查看任务执行详情 或者通过https://tool.lu/crontab/查看任务执行时间

需要删除已经上传过的文件 ,也是计划任务 每隔3个小时的20分钟时候执行rm-rf即可。

20 */3 * * * python  /me/algo-esp/task/upload.py delete