web-dev-qa-db-ja.com

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

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

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

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

私はWindows XPとLinuxマシンの両方を持っているので、それらのいずれかの解決策がうまくいきます。

18
daphshez

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

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

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

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

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

23
Paxxi

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_から開始するだけです。

10
Grumbel

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

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

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

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

タスクスケジューラから直接タスクを実行して、機能することを確認できます。もう1つの問題は、ラップトップをバッテリーで実行することでした。タスクマネージャーの[条件]タブで、[コンピューターがAC電源に接続されている場合にのみタスクを開始する]チェックボックスをオフにします。それ以外の場合は、ACが接続されている場合にのみタスクが実行されます。

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

9
steven Teal

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

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

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

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

  • TweakUIを開く
  • 私のコンピューターに行く–> autorun–>ハンドラー
  • 作成をクリックします
  • Synctoyの場所を見つける(デフォルトではプログラムファイル)
  • プログラムランチャーのロゴをダブルクリックします
  • 以下のリストのすべてのメディアラジオボタンを選択します。
  • OKをクリック
  • [適用]をクリックします。

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

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

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)
2
Ivo Flipse

いくつかのバッチでAUTORUN.INFを使用して、主要なフォルダーを同期します。とてもシンプルでとても効果的です。

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

1
Lightly Salted

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

ちなみに、デバイスの署名に応じて特定のアクションを定義できます。特定のキーが挿入されたときに作業ドキュメントを同期したり、USBマスストレージMP3プレーヤーが挿入されたときに音楽を同期したり、Kindleをプラグインしたときに本を同期したりできます。

1
Daduke

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

1
57ar7up

あなたは単に"" そして終わり ".\dectory\"←その終わり\スラッシュも。

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

私の様子:

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

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

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

1
GordonM

これは古いスレッドですが、欲しい人のためにここで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
)
0
edeetee

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

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

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

それは無料です!

0
Steve Kalman