在装载Raspberry Pi上自动将文件复制到USB

时间:2017-05-03 14:27:33

标签: python linux raspberry-pi udev

我目前正在做一个项目,需要将文件自动复制到mount-mount上的USB-stick。基于我在互联网上的研究,我相信使用udev规则是可行的。因此,当USB插入我的RPi2时,udev规则将执行python脚本,允许将文件复制到USB记忆棒。

问题是,我也听说过该脚本将在RPi挂载USB之前执行,这意味着该文件不会被复制。这个问题有方法解决吗?当我在内部复制文件时(在RPi本身而不是USB上)执行python脚本,当我尝试将其复制到USB时它就无法工作。

以下是我的代码:

Udev规则

KERNEL=="sd*1", ACTION=="add", RUN=="/home/pi/datalogger/autocopy.sh"

Shell脚本

cd /
cd /home/pi/datalogger
sudo /usr/bin/python autocopy.py
cd / 
exit

Python脚本

import shutil
import datetime

# File to be copied
source = "/home/pi/copied.txt"

# USB name must be changed to 'USB1' in order for auto copy to work
destination = "/media/pi/USB1/datalogger_backup_%s.txt" % datetime.datetime.now().date()

try:
   # Copy file to destination
   shutil.copy2(source, destination)
   # E.g. source and destination is the same location
except shutil.Error as e:
   print("Error: %s" % e)
   # E.g. source or destination does not exist
except IOError as e:
   print("Error: %s" % e.strerror)

1 个答案:

答案 0 :(得分:2)

  

问题:...由于尚未安装USB,目的地无法使用

将以下内容添加到script以验证mount状态:

mount >> /tmp/mount.log

阅读此auto-mounting-usb-storage/
也许你可以适应你的需求。