Ошибка автоматического копирования файлов с USB-накопителя при подключении
Я пытаюсь скопировать все файлы USB-накопителя автоматически при подключении к компьютеру. Я сделал два сценария Python для этой цели.
Следующий скрипт dete_usb.py определяет, когда подключен USB-накопитель, и вызывает copy_usb.sh.
import functools
import os.path
import pyudev
import subprocess
def main():
BASE_PATH = os.path.abspath(os.path.dirname(__file__))
path = functools.partial(os.path.join, BASE_PATH)
call = lambda x, *args: subprocess.call([path(x)] + list(args))
context = pyudev.Context()
monitor = pyudev.Monitor.from_netlink(context)
monitor.filter_by(subsystem='usb') # Remove this line to listen for all devices.
monitor.start()
for device in iter(monitor.poll, None):
# I can add more logic here, to run only certain kinds of devices are plugged.
call('/home/latishpavan/copy_usb.sh')
if __name__ == '__main__':
main()
Вот copy_usb.sh
#!/bin/sh
python /home/latishpavan/copy_usb.py
Это copy_usb.py
import shutil
import os
import datetime as dt
from shutil import copytree, ignore_patterns
from glob import glob
from subprocess import check_output, CalledProcessError
import time
import sys
time.sleep(5)
print("starting copying....")
usb_path = '/run/media/latishpavan/UBUNTU 17_1'
files = os.listdir(usb_path)
destination = "/home/latishpavan/backup_%s" % dt.datetime.now()
try:
for f in files:
source = os.path.join(usb_path, f)
print(source)
if not '.disk' in source:
copytree(source, destination, ignore=ignore_patterns('*.pyc', 'tmp*'))
except Exception as e:
print(e)
Когда я запускаю copy_usb.py в терминале, все работает нормально, но когда он запускается с detect_usb.py, я получаю FileNotFoundError сразу после установки USB-накопителя. Я также попытался поставить time.sleep(), но появляется та же ошибка. Можете ли вы помочь мне выяснить, где я иду не так? Я работаю над CentOS 7.