2017-05-03 47 views
2

目前,我正在做這需要一個文件將自動複製到安裝USB記憶棒的項目。基於我在互聯網上的研究,我相信這是可行的使用udev規則。所以,當USB插入到我的RPi2中時,udev規則將執行一個python腳本,該腳本允許將文件複製到U盤中。將文件複製到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

我做到了,仍然沒有工作 – dboy

+0

請解釋一下,不解地問:_「當我在內部複製的文件(在RPI本身沒有USB),它只是不工作,當我試圖把它複製到python腳本被執行死刑USB。」_。 – stovfl

回答

2

問題:...目的地不是可作爲USB尚未安裝

以下內容添加到您的script驗證mount狀態:

mount >> /tmp/mount.log 

閱讀這auto-mounting-usb-storage/
也許你可以適應你的需求。

+0

我應用了你給我的鏈接中的代碼,設法將文件複製到USB棒上。但是,當我從RPi上物理卸載棒時,複製的文件不在USB上。似乎無法理解爲什麼。 – dboy

+0

@dboy:在卸下USB棒之前,您是否真的執行過'umount'命令? – stovfl

+0

是的,我沒有改變你給我的鏈接中的任何代碼。我爲automount/unmount創建了一個新規則,並應用了示例代碼,第二條規則將該文件複製到USB記憶棒。 – dboy