2017-05-03 18 views
2

현재 마운트 할 때 USB 스틱에 파일을 자동으로 복사해야하는 프로젝트가 있습니다. 인터넷에서의 내 연구를 바탕으로, 나는 그것이 udev 규칙을 사용하여 할 수 있다고 믿습니다. 따라서 USB가 RPi2에 삽입되면 udev 규칙은 파일을 USB 스틱에 복사 할 수있는 python 스크립트를 실행합니다.마운트 할 때 자동으로 파일을 USB에 복사하십시오. Raspberry Pi

문제는 RPi가 USB를 마운트하기 전에 스크립트가 실행되어 파일이 복사되지 않는다는 것입니다. 이것에 대한 해결책이 있습니까? 파이썬 스크립트는 파일을 내부적으로 복사했을 때 (USB가 아닌 RPi 자체에서) 실행되었습니다. USB로 복사하려고 할 때 작동하지 않습니다. 다음은

내 코드입니다 :

의 udev 규칙

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

쉘 스크립트

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

파이썬 스크립트

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가 아닙니다), 복사하려고 시도했을 때 작동하지 않습니다 USB."_. – stovfl

답변

2

질문는 다음 USB가 아직

mount 상태를 확인하기 위해 script에 다음을 추가 장착 할 같이 ... 대상을 사용할 수 없습니다 :

mount >> /tmp/mount.log 

읽기 이 auto-mounting-usb-storage/
어쩌면 당신은 당신의 필요에 적응할 수 있습니다.

+0

내가 준 링크의 코드를 적용하여 USB 스틱에 복사 된 파일을 가져 왔습니다. 그러나 RPi에서 실제로 스틱을 분리하면 복사 된 파일이 USB에 저장되지 않습니다. 이유를 이해하지 못하는 것 같습니다. – dboy

+0

@dboy : USB 스틱을 제거하기 전에'umount' 명령을 실행 했습니까? – stovfl

+0

네, 저에게 준 링크의 코드에서 아무것도 변경하지 않았습니다. automount/unmount에 대한 새로운 규칙을 만들고 예제 코드를 적용하고 두 번째 규칙에 따라 파일을 USB 스틱에 복사했습니다. – dboy