如何将USB(闪存)驱动器的内容自动复制到另一个目录?

英法票价

我想对我的Ubuntu进行编程,使其自动将USB闪存驱动器的内容复制到我的主目录中的已定义文件夹中。

我希望在连接任何闪存驱动器时自动完成此操作(因此不仅限于特定的闪存驱动器)。

雅各布·弗利姆

下面的脚本是一个opposite-变种这个脚本; 尽管该脚本作用于指定的驱动器,但此脚本作用于指定的(usb)驱动器之外的所有驱动器。

它能做什么

  • 每当连接外部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-0A41media_extern最后一个是我要排除的永久连接磁盘:

    excluded = ["media_extern"]
    

将脚本另存为copy_flash.py,通过以下方式运行:

python3 /path/to/copy_flash.py

如果它满足您的要求,请将其添加到启动应用程序中:Dash> Startup Applications> Add

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何将windows.old文件夹复制到另一个驱动器?

通过USB启动盘将文件从一个NTFS驱动器复制到另一个驱动器

如何将大于4GB的文件复制到USB闪存驱动器?

我的硬盘有错误,如何将其复制到另一个驱动器

将光盘布局和分区复制到另一个驱动器

如何在Windows下将目录树从一个驱动器复制到另一个驱动器,以复制任何连接点?

如何将所有文件和目录(除了一个)从本地驱动器复制到 HDFS?

如何使用单个DVD驱动器将DVD复制到另一个DVD?

如何使硬盘驱动器将其内容实时复制到另一个硬盘驱动器?

硬盘驱动器已满时,将文件从一个连接的USB驱动器复制到另一个连接的USB驱动器

如何将目录(文件夹及其内容)复制到另一个目录?

关闭游戏后,如何制作一个脚本,将游戏保存文件自动复制到闪存驱动器

如何将一个流的内容复制到另一个?

如何将一个ArrayList的内容复制到另一个?

如何将文件从外部驱动器复制到一个分区中?

如何使用MS GRAPH SDK C#获取驱动器信息(ParentReference)以将文件复制到另一个驱动器

如何将文件从另一个目录复制到当前目录?

如何将一个迭代器复制到另一个?

将文件从USB闪存驱动器复制到OpenBSD的根目录

将整个文件系统层次结构从一个驱动器复制到另一个驱动器

如何将文件复制到Java 8中的另一个目录?

如何将工作表内容复制到另一个工作表?

如何将引用的内容复制到另一个stl向量?

如何将整个驱动器克隆到另一个驱动器?

Powershell:如何将文件从一个目录复制到另一个目录

如何将带有 BATCH 脚本的文件从一个驱动器上的文件夹复制到另一个驱动器上的同名文件夹中?

如何将匹配文件从目录/子目录复制到另一个目录

如何将每个文件的目录从一个硬盘复制到另一个硬盘?

Ansible:将目录内容复制到另一个目录