我正在寻找一种解决方案,一旦连接了该设备,就可以将所有文件从硬盘驱动器上的特定目录复制到 USB 存储设备上的特定目录。
我有一个可以为我下载播客剧集的程序。
我希望一旦将这些文件连接到计算机,这些文件就会自动移动(或至少复制)到我的 mp3 播放器中。
我有 Windows XP 和 Linux 机器,因此任何一种解决方案都适合我。
答案1
您可以轻松使用 autorun.inf 和 .bat 文件为 Windows 构建自己的解决方案。
创建一个 bat 文件来将目录复制到您的 USB 驱动器。
xcopy /e /y c:\podcasts\*.* .\dir_on_usb_drive
将 bat 文件放在你的 mp3 播放器上,然后使用以下命令创建 autorun.inf这些说明
现在你应该有自己解决问题的方案了,但也有可能已经有一些现成的解决方案了:)
答案2
对于 Linux:
如果你不介意写一点 Python 脚本,你可以编写一个守护进程来监听 HAL 事件,然后在你选择的设备插入后启动一个脚本。示例脚本如下这:
#!/usr/bin/env python
# -*- encoding: utf-8 -*-
import dbus
import dbus.service
if getattr(dbus, 'version', (0,0,0)) >= (0,41,0):
import dbus.glib
import gobject
import sys
import os
class DeviceManager:
def __init__(self):
self.bus = dbus.SystemBus()
self.bus.add_signal_receiver(self.device_added,
'DeviceAdded',
'org.freedesktop.Hal.Manager',
'org.freedesktop.Hal',
'/org/freedesktop/Hal/Manager')
self.bus.add_signal_receiver(self.device_removed,
'DeviceRemoved',
'org.freedesktop.Hal.Manager',
'org.freedesktop.Hal',
'/org/freedesktop/Hal/Manager')
def udi_to_device(self, udi):
return self.bus.get_object("org.freedesktop.Hal", udi)
def device_added(self, udi):
print 'Added', udi
properties = self.udi_to_device(udi).GetAllProperties()
if properties.get('info.category') == u'volume':
label, dev = properties.get('volume.label'), properties.get('block.device')
print 'Mounting %s on /media/%s' %(dev, label)
os.system('pmount %s /media/%s' %(dev, label))
def device_removed(self, udi):
print 'Removed', udi
if __name__ == '__main__':
m = DeviceManager()
mainloop = gobject.MainLoop()
try:
mainloop.run()
except KeyboardInterrupt:
mainloop.quit()
print 'Exiting...'
sys.exit(0)
您只需修改该device_added()
功能以将其限制到特定设备并os.system()
用自定义脚本替换调用。
为了将其限制到驱动器,volume.uuid
可以使用属性,并且可以使用程序显示可用属性的完整列表hal-device
。
要在启动时启动守护进程,只需从 启动它/etc/rc.local
。
答案3
插入后 Windows 7 会自动同步到您的闪存/USB 设备!
下载 SyncToy并建立文件夹配对和同步名称(“SyncTest”)
看:操作方法:使用 SyncToy 制作“我的文档”的夜间镜像
- 运行计算机管理控制台
- 事件查看器/Windows 日志/系统
- 查找媒体插入事件
- “便携式设备枚举器服务已进入运行状态。”(您可能需要清除事件日志并弹出/重新插入媒体以触发此日志事件)
- 在上方事件窗口中,右键单击事件并选择“将任务附加到此事件”
- Windows 打开“创建基本任务窗口”
- 为您的任务命名并点击下一步
- 活动信息已填写,下一步
- 操作应显示“启动程序”,下一步
- 在启动程序窗口中,浏览到 SyncToyCmd.exe(或您选择的同步应用程序)
- 添加参数。如果您的备份配对名为 SyncTest,请输入“-RsyncTest”。不要添加引号,不要在 -R 后添加空格,SyncToy 命令行(或者可能是 Windows 7)区分大小写,因此 SyncTest 不等于 synctest!
- 下一步,完成
您可以直接从任务计划程序运行该任务以验证其是否有效。现在我遇到的唯一另一个问题是使用电池运行笔记本电脑,在任务管理器的条件选项卡下,取消选中“仅当计算机使用交流电源时启动任务”,否则任务仅在插入交流电时运行。
此外,当 USB 轮询和断开/重新连接时,此任务将每隔几分钟运行一次,实际上很酷,它会一直自动同步到 USB HDD :)
答案4
我尝试了 Steven 的方法,但 USB 事件没有显示在“事件查看器/Windows 日志/系统”(我使用的是 Windows 7)中。我仔细研究了一下,发现 USB 插入事件位于“事件查看器/应用程序和服务日志/Microsoft/Windows/DriverFrameworks-UserMode/Operational”中。尝试先清除日志(只是为了更容易找到所需的事件),然后插入 USB 闪存驱动器。刷新日志,应该会出现一堆事件。我选择了最上面的事件(即最新的事件),并将任务分配给该事件(确保事件描述看起来与您插入的特定 USB 驱动器有关)。
我使用免费的 SyncBack 程序进行实际同步。效果很好!