コンピューターに接続したときに、ファイルをUSBドライブに自動的にコピーするにはどうすればよいですか?


18

このデバイスが接続されたら、ハードドライブ上の特定のディレクトリからUSBメモリデバイス上の特定のディレクトリにすべてのファイルをコピーするためのソリューションを探しています。

ポッドキャストエピソードをダウンロードするプログラムがあります。

これらのファイルをコンピューターに接続したら、mp3プレーヤーに自動的に移動(または少なくともコピー)したいです。

私はWindows XPとLinuxマシンの両方を持っているので、それらのいずれかのソリューションは私のために働くでしょう。


2
スケジュールされた同期に満足していないと思いますか?
イボフリップ

回答:


23

autorun.infと.batファイルを使用して、Windows用の独自のソリューションを非常に簡単に構築できます。

batファイルを作成して、ディレクトリをUSBドライブにコピーします。

xcopy /e /y c:\podcasts\*.* .\dir_on_usb_drive

mp3プレーヤーにbatファイルを配置し、これらの手順を使用してautorun.infを作成します

今、あなたはあなたの問題に対してあなた自身の自家製の解決策を持っているはずですが、それはそこに事前に作られた解決策があることは確かに可能です:)


素晴らしいヒント!!!! +10
in.spite 2009

1
提案をありがとう。autorun.infは次のようになります。[autorun] open = getpodcasts.bat action =プレイヤーへのポッドキャストのコピー少なくともwinxp sp2、これはAutoPlayerのみを開き、新しい「プレイヤーへのポッドキャストのコピー」が上部にあります。これをオーバーライドして強制的にスクリプトをサイレントに実行する方法はないと思います。また、明らかに、自動再生をオンにする必要があります。私がウィンドウにポップする必要があるコマンドを持っていることは、実際には大きな改善です。
daphshez

いい考えだ!:) +1

3
マイクロソフトは、サムドライブで自動実行を使用する機能を削除しませんでしたか?
エール

10

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ます。


これが良い答えであるかどうかを確認することはできませんが、トラブルだけでも賛成に値します!とにかく、私はここの非プログラマーで少し簡単にしようとするでしょう;-) 私のような!
イボフリップ

9

Windows 7および挿入時にフラッシュ/ USBデバイスに自動同期!

SyncToyダウンロードし、フォルダーのペアリングと同期名を確立します( "SyncTest")

参照:方法:SyncToyを使用してマイドキュメントの夜間ミラーを作成する

  • コンピューター管理コンソールを実行する
  • イベントビューア/ Windowsログ/システム
  • メディア挿入イベントを見つける
    • 「Portable Device Enumerator Serviceサービスが実行状態になりました。」(イベントログをクリアし、このログイベントをトリガーするにはメディアをイジェクト/再挿入する必要がある場合があります)
  • 上部のイベントウィンドウで、イベントを右クリックし、[タスクをこのイベントに添付]を選択します
  • Windowsが「基本タスクの作成ウィンドウ」を開きます
  • タスクに名前を付けて、次にヒットする
  • イベント情報は既に入力されています
  • アクションには、「プログラムの開始」が表示されます。次に
  • [プログラムの開始]ウィンドウで、SyncToyCmd.exe(または選択した同期アプリ)を参照します。
  • 引数を追加します。バックアップペアリングがSyncTestと呼ばれる場合は、「-RsyncTest」と入力します。引用符を追加しないでください。-Rの後にスペースを追加しないでください。SyncToyコマンドライン(またはWindows 7)で大文字と小文字が区別されるため、SyncTestはsynctestと等しくなりません。
  • 次に、完了

タスクスケジューラからタスクを直接実行して、タスクが機能することを確認できます。今、私が抱えていた他の唯一の問題は、ラップトップをバッテリーで実行することでした。タスクマネージャーの[条件]タブで、[コンピューターがAC電源の場合のみタスクを開始する]をオフにします。

また、USBがポーリングし、切断/再接続すると、このタスクは数分ごとに実行されます。実際にはとてもクールで、常にUSB HDDに自動同期されます:)


2

編集:SyncBack SEにはトリガーアクションがあります:

プロファイルを開き、「いつ」タブ、「挿入」の順に移動します。ドライブ文字、ラベル、またはシリアル番号で指定できます。

しかし、SEバージョンは無料ではなく、Windowsのみです(私は思う)

または、TweakUIを使用して、同期プログラムの自動実行イベント(SyncToyの例)を追加してみてください。

  • TweakUIを開く
  • 自分のコンピューターに移動–>自動実行–>ハンドラー
  • 作成をクリックします
  • Synctoyの場所を検索します(デフォルトとしてプログラムファイル)
  • プログラムランチャーのロゴをダブルクリックします
  • 以下のリストのすべてのメディアラジオボタンを選択します。
  • OKをクリック
  • 適用をクリックします。

  • 次に、ペンドライブを差し込みます。

  • コンピューターでドライブを右クリックし、プロパティを選択します。
  • 自動再生タブをクリックします
  • ドロップダウンメニューから音楽を選択します。
  • 「実行するアクションを選択する」ラジオボタンをクリックします
  • SyncToyロゴとの同期を選択します
  • ドロップダウンメニューで指定された他のオプションについて繰り返します
  • [適用]をクリックして[OK]をクリックします。
  • ドライブを取り外して再挿入し、機能しているかどうかを確認します

USBデバイスを接続すると自動的に起動する(他の)プログラムは見つかりません。

それらはすべて、同期を開始するためにスケジューリングに依存しています。USBデバイスが接続されていない場合は単に失敗し、接続されている場合は実行されるだけで、スケジュールするように決定できます。

しかし、正直なところ、単に同期ボタンをクリックするだけで簡単になり、USBデバイスも手動で接続する必要があります。

とにかく、LinuxとWindowsの両方で実行される同期ツールを見つけました。DirSyncProは完全に無料で、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)

1
これを、VistaおよびWindows 7の新しいトリガーイベントを使用してusbデバイスが接続されたときに実行するようにスケジュールされたタスクと組み合わせることができます。
パクシ09

1
私はトリックを行うことができ、自動実行ソリューションは、他の回答で述べたと思います
イヴォFlipse

ただ、ノートとして、私は、「挿入時には」特徴SyncBack SE 5に新規であると考えている
daphshez

1

スティーブンの方法を試しましたが、USBイベントが「イベントビューアー/ Windowsログ/システム」に表示されませんでした(Windows 7を使用しています)。ちょっと調べてみると、USB挿入イベントが「イベントビューアー/アプリケーションとサービスログ/ Microsoft / Windows / DriverFrameworks-UserMode / Operational」にあることがわかりました。最初にログを消去して(必要なイベントを見つけやすくするために)、USBフラッシュドライブを挿入してください。ログを更新すると、一連のイベントが表示されます。一番上のイベント(つまり、最新のイベント)を選択し、それにタスクを割り当てました(イベントの説明に、挿入した特定のUSBドライブに固有の何かがあるようにしてください)。

無料のSyncBackプログラムを使用して、実際の同期を行いました。よく働く!


1

キーフォルダーを同期するために、いくつかのバッチでAUTORUN.INFを使用しています。非常にシンプルで非常に効果的です。

また、読み取り専用のアーカイブされたautorun.infファイルがある場合、そのハードコントラクトusb-stickウイルスは


1

単に忘れて""終了するだけです".\dectory\" ←その終了\スラッシュも同様です。

元のバッチ式は機能しますが、それはほんの数日です。ディレクトリ、バッチファイル、およびコマンドプロンプトには多くのスペースがあります。

私の見た目:

xcopy "F:\Web Stuff\Web Dev\Dev_FactorY Designs\*.*" ".\HTML_PROJ\Web Stuff\Web Dev\Dev_FactorY Designs\" /e /y

1

Linuxでは、プログラムを継続的に実行してイベントをリッスンする代わりに、既に実行中のイベントを使用できます。デバイスを一時的な場所にマウントし、rsyncを起動して多数のディレクトリを同期するフックをudevに追加できます。

ちなみに、デバイスの署名に応じて特定のアクションを定義できます:特定のキーが挿入されたときに作業ドキュメントを同期するか、USB大容量MP3プレーヤーが挿入された場合は音楽を同期し、そこにKindleを接続するときに本を同期します。


1

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になるため、動作しません)


0

カレンウェアのレプリケータープログラムを使用しています。彼女は、Windows用の多くの小さな便利なプログラムの著者です(初期のW98 / W2K / XP時代のPowerToysを考えてください)。

こちらがリンクです。http://www.karenware.com/powertools/ptreplicator.asp

夜間のスケジュールで設定してください。USBドライブが接続されている場合、ダウンロードフォルダとUSBコンテンツが同期されます。

それは無料です!


ありがとう。しかし、私の問題はコピー自体ではなく(1つのディレクトリにあるファイルの束だけです)、適切なタイミングでこのコピーを作成することです。スケジュールされたタスクは素晴らしいですが、私が探していたものとはまったく異なります。
daphshez

0

これは古いスレッドですが、私はそれを望んでいる人のためにここでこれをするだろうと思いました。ニーズに合わせて関連情報を変更すると、すべての作業が自動的に行われます。これの最初の反復を行った/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
)
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.