我想对我的Ubuntu进行编程,使其自动将USB闪存驱动器的内容复制到我的主目录中的已定义文件夹中。
我希望在连接任何闪存驱动器时自动完成此操作(因此不仅限于特定的闪存驱动器)。
下面的脚本是一个opposite-变种这个脚本; 尽管该脚本作用于指定的驱动器,但此脚本作用于除指定的(usb)驱动器之外的所有驱动器。
target_folder =
。将创建一个子目录,其中包含从中复制驱动器的名称。excluded =
,您可以在其中(可能应该)列出“普通”,(永久)USB设备的名称(“普通”驱动器已经自动排除在外)。似乎Ubuntu主要通过文件系统定义设备的类型。我测试了将闪存驱动器格式化为ext4
,并将其显示为“普通”驱动器而不是闪存驱动器。#!/usr/bin/env python3
import subprocess
import time
import shutil
#--
target_folder = "/path/to/target_folder"
excluded = ["media_extern"]
#--
def get_mountedlist():
return [(item.split()[0].replace("├─", "").replace("└─", ""),
item[item.find("/"):]) for item in subprocess.check_output(
["/bin/bash", "-c", "lsblk"]).decode("utf-8").split("\n") if "/" in item]
def identify(disk):
command = "find /dev/disk -ls | grep /"+disk
output = subprocess.check_output(["/bin/bash", "-c", command]).decode("utf-8")
if "usb" in output:
return True
else:
return False
done = []
while True:
mounted = get_mountedlist()
new_paths = [dev for dev in get_mountedlist() if not dev in done and not dev[1] == "/"]
valid = [dev for dev in new_paths if (identify(dev[0]), dev[1].split("/")[-1] in excluded) == (True, False)]
for item in valid:
target = target_folder+"/"+item[1].split("/")[-1]
try:
shutil.rmtree(target)
except FileNotFoundError:
pass
shutil.copytree(item[1], target)
done = mounted
time.sleep(4)
将脚本复制到一个空文件中。在头部区域中,设置:
您要存储插入的闪存驱动器副本的路径
target_folder = "/path/to/directory"
您可能永久连接的设备的名称(lsblk
如果您不知道,请使用)
excluded = ["media_extern", "<some_other_drive>"]
例如:
sdb 8:16 1 471M 0 disk
└─sdb1 8:17 1 471M 0 part /media/jacob/19C3-0A41
sdc 8:32 0 698,6G 0 disk
└─sdc1 8:33 0 698,6G 0 part /media/jacob/media_extern
sr0 11:0 1 1024M 0 rom
在my的输出中lsblk
,有两个设备:19C3-0A41
和media_extern
。最后一个是我要排除的永久连接磁盘:
excluded = ["media_extern"]
将脚本另存为copy_flash.py
,通过以下方式运行:
python3 /path/to/copy_flash.py
如果它满足您的要求,请将其添加到启动应用程序中:Dash> Startup Applications> Add
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句