このデバイスが接続されたら、ハードドライブの特定のディレクトリからUSBメモリデバイスの特定のディレクトリにすべてのファイルをコピーするためのソリューションを探しています。
ポッドキャストエピソードをダウンロードするプログラムがあります。
コンピューターに接続したら、これらのファイルをmp3プレーヤーに自動的に移動(または少なくともコピー)したいと思います。
私はWindows XPとLinuxマシンの両方を持っているので、それらのいずれかの解決策がうまくいきます。
Autorun.infと.batファイルを使用すると、Windows用の独自のソリューションを簡単に構築できます。
Batファイルを作成して、USBドライブにディレクトリをコピーします。
xcopy /e /y c:\podcasts\*.* .\dir_on_usb_drive
Batファイルをmp3プレーヤーに配置し、 これらの手順を使用してautorun.infを作成します
今、あなたはあなたの問題に対するあなた自身の自家製の解決策を持っているはずですが、そこに既成の解決策があることは確かに可能です:)
Linuxの場合:
Pythonスクリプトを気にしない場合は、イベントをHALでリッスンし、選択したデバイスがプラグインされたらスクリプトを起動するデーモンを作成できます。スクリプト例は this のようになります:
_#!/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とフラッシュ/ USBデバイスに自動同期!
SyncToyをダウンロード して、フォルダーのペアリングと同期名を確立します( "SyncTest")
参照: ハウツー:SyncToyを使用してマイドキュメントの夜間ミラーを作成する
タスクスケジューラから直接タスクを実行して、機能することを確認できます。もう1つの問題は、ラップトップをバッテリーで実行することでした。タスクマネージャーの[条件]タブで、[コンピューターがAC電源に接続されている場合にのみタスクを開始する]チェックボックスをオフにします。それ以外の場合は、ACが接続されている場合にのみタスクが実行されます。
また、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)
いくつかのバッチでAUTORUN.INFを使用して、主要なフォルダーを同期します。とてもシンプルでとても効果的です。
また、読み取り専用のアーカイブされたautorun.infファイルがある場合、そのハードコントラクトusb-stickウイルスの
Linuxでは、プログラムを継続的に実行してイベントをリッスンする代わりに、すでに実行中のプログラムを使用できます。デバイスを一時的な場所にマウントし、rsyncを起動して多数のディレクトリを同期するフックをudevに追加できます。
ちなみに、デバイスの署名に応じて特定のアクションを定義できます。特定のキーが挿入されたときに作業ドキュメントを同期したり、USBマスストレージMP3プレーヤーが挿入されたときに音楽を同期したり、Kindleをプラグインしたときに本を同期したりできます。
Raspbian Wheezyで動作するRaspberry Piで小さな監視システムをセットアップしていたとき、IPカメラによってアップロードされたFTPフォルダーからすべてのファイルを常に移動する必要がありました。だから、私はホームディレクトリ(〜)にスクリプトを書いて、それを毎分1回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になるため、機能しません)
あなたは単に""
そして終わり ".\dectory\"
←その終わり\
スラッシュも。
元のバッチ式が機能します。たった今です。ディレクトリ、バッチファイル、およびコマンドプロンプトHATEには多くのスペースがあります。
私の様子:
xcopy "F:\Web Stuff\Web Dev\Dev_FactorY Designs\*.*" ".\HTML_PROJ\Web Stuff\Web Dev\Dev_FactorY Designs\" /e /y
Stevenの方法を試しましたが、USBイベントが「イベントビューア/ Windowsログ/システム」に表示されませんでした(Windows 7を使用しています)。少し調べてみたところ、USB挿入イベントが「イベントビューア/アプリケーションとサービスログ/ Microsoft/Windows/DriverFrameworks-UserMode/Operational」にあることがわかりました。最初にログを消去して(目的のイベントを見つけやすくするため)、次にUSBフラッシュドライブを挿入してください。ログを更新すると、一連のイベントが表示されます。一番上のイベント(つまり、最新のイベント)を選び、それにタスクを割り当てました(イベントの説明が、挿入した特定のUSBドライブに固有のものであるように見えるようにしてください)。
無料のSyncBackプログラムを使用して実際の同期を行いました。よく働く!
これは古いスレッドですが、欲しい人のためにここでpuしようと思いました。必要に応じて関連情報を変更すると、すべてが自動的に行われます。 https://superuser.com/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
)
私はカレンウェアのレプリケータープログラムを使用しています。彼女はWindows向けの多くの小さな便利なプログラムの作成者です(W98/W2K/XPの初期の時代のPowerToysを考えてください)。
こちらがリンクです。 http://www.karenware.com/powertools/ptreplicator.asp
毎晩のスケジュールで設定してください。 USBドライブが接続されている場合、ダウンロードフォルダーはUSBコンテンツと同期されます。
それは無料です!