Answers:
您可以使用autorun.inf和.bat文件为Windows轻松构建自己的解决方案。
创建一个bat文件,将目录复制到USB驱动器。
xcopy /e /y c:\podcasts\*.* .\dir_on_usb_drive
将bat文件放在mp3播放器上,并按照以下说明创建autorun.inf
现在,您应该拥有自己的针对问题的内置解决方案,但是肯定有可能存在预制的解决方案:)
对于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
。
Windows 7并在插入时自动同步到您的Flash / USB设备!
下载SyncToy并建立您的文件夹配对和同步名称(“ SyncTest”)
请参阅:操作方法:使用SyncToy对“我的文档”进行夜间镜像
您可以直接从“任务计划程序”运行任务以验证其是否有效。现在,我遇到的唯一另一个问题是使用电池为笔记本电脑供电,在“任务管理器”的“条件”选项卡下,取消选中“仅当计算机使用交流电源时才启动任务”,否则任务将仅在插入交流电源后才能运行。
另外,随着USB轮询和断开/重新连接,此任务将每隔几分钟运行一次,实际上有点酷,它一直一直自动同步到USB HDD :)
编辑:事实证明SyncBack SE具有触发动作:
打开配置文件,转到“何时”选项卡,然后“插入”。它使您可以按驱动器号,标签或序列号指定。
但是SE版本不是免费的,并且仅Windows(我认为)
或者,您可以尝试使用TweakUI为同步程序(例如SyncToy)添加自动运行事件
单击应用。
现在插入您的笔式驱动器。
连接USB设备时,我似乎找不到任何将自动启动的程序。
他们都依靠调度来开始同步。您可以决定将它安排在我们的每一个地方,如果未连接USB设备,它将失败,如果已经连接,则它将运行。
但是老实说,如果您仅单击“同步”按钮,则也将更加容易,您还必须手动插入USB设备。
无论如何,我还发现了一个可以在Linux和Windows上运行的同步工具:DirSync Pro是完全免费的,可以在Java上运行,并且具有不错的GUI:
* Synchronization
o Powerful synchronization algorithm.
o Bidirectional (Two way) and Unidirectional (One way) synchronization mode.
o Option for various behavior of conflict resolution for Bidirectional Synchronization.
o Synchronizes unlimited number of folders.
o Large number of options to change the synchronization behavior.
o Option to synchonise subdirectories recursively.
o Synchronizes files/folders any file system (FAT, FAT16, FAT32, NTFS, WinFS, UDF, Ext2, Ext3, ...).
o Synchronizes files from/to network drives
o Synchronizes files from/to any mounted devices (Harddisks, USB-Sticks, Memory cards, External drives, CD/DVD's, ...).
o Synchronization could be used for making incremental backups.
o Option to create up to 50 backups from the modified/changed files before synchronization.
o Option to define a backup folder.
o Option for handling symbolic links.
o Option for handling time-stamps.
* General
o Easy, clear and user-friendly graphical user interface, no unnecessary gadget you never use.
o Runs on every modern operating system including Windows™, Linux™ and Macintosh™
o It is Portable! It does not need any installation. Just run the application!
o Open source, it is 100% free of charge, 100% free of commercial text, 100% free of advertisements and 100% free of spyware.
o No time/function limitations
o Uses no local database, so no overhead
o Does not need any installation. Just download and run it. You can put it on you USB-stick en you can run it on any computer/any platform.
* Logging
o Advanced logging/reporting facilities. Just select a log level and define where to write the log.
o Option to log on application level (default log)
o Option to log on each directory level (dir log)
o Option to define the log leven (how much to log)
我尝试了Steven的方法,但是USB事件没有显示在“事件查看器/ Windows日志/系统”中(我使用的是Windows 7)。我戳了一下,发现USB插入事件位于“事件查看器/应用程序和服务日志/ Microsoft / Windows / DriverFrameworks-UserMode /操作”中。尝试首先清除日志(只是为了更轻松地找到所需的事件),然后插入USB闪存驱动器。刷新日志,然后会出现一堆事件。我选择了最重要的事件(即最近的事件),并将任务分配给该事件(确保事件描述看起来像特定于您插入的特定USB驱动器的东西)。
我使用免费的SyncBack程序进行实际的同步。很棒!
您只是在忘记""
并结束".\dectory\"
←那个\
斜线也是如此。
原始的批处理公式有效,到现在为止,目录,批处理文件和命令提示符中有很多空格将它们讨厌。
我的样子:
xcopy "F:\Web Stuff\Web Dev\Dev_FactorY Designs\*.*" ".\HTML_PROJ\Web Stuff\Web Dev\Dev_FactorY Designs\" /e /y
当我在Raspbian Wheezy上运行的Raspberry Pi建立小的监视系统时,我需要不断地移动IP摄像机上传的FTP文件夹中的所有文件。因此,我在主目录(〜)中编写了脚本,并使用cron每分钟调用一次
crontab -e
*/1 * * * * sudo ~/move_images_to_usb
move_images_to_usb是普通的bash脚本,以前我不是在bash上编写脚本,但是...
#!/bin/bash
if df | grep "sda1"
then
mkdir /media/usb0/ipcam1
cp -r /var/ftp /media/usb0/ipcam1
rm /var/ftp/*
fi
插入USB驱动器后,其名称为sda1(另一个驱动器将为sdb1,因此它将无法工作)
我使用Karenware的复制程序。她是Windows的许多小型有用程序的作者(想想W98 / W2K / XP早期的PowerToys)。
这是链接。http://www.karenware.com/powertools/ptreplicator.asp
每晚进行设置。如果插入了USB驱动器,它将使下载文件夹与USB内容同步。
免费!
这是一个旧线程,但是我想我会在这里为任何想要的人使用。更改相关信息以适合您的需求,然后一切都会为您完成。值得一提的是/superuser//users/232313/tyler。
@echo off
cls
echo waiting
goto check
Change the STUFF TO COPY location to the folder that you want
everything inside to be send to the usb's, and change the 3 instances of
G: to whatever drive letter that the USB uses.
Good Luck!
:start
set choice=
robocopy "C:\STUFFTOCOPY" "G:" /E
echo Waiting for removal
goto wait
:check
timeout /t 1 /nobreak >nul
if exist "G:" (goto start) else goto check
:wait
timeout /t 1 /nobreak >nul
if exist "G:" (goto wait) else (
echo removed
echo waiting
goto check
)