Bilgisayarıma bağladığımda dosyaları bir USB sürücüye otomatik olarak nasıl kopyalayabilirim?


18

Bu aygıt bağlandıktan sonra sabit diskteki belirli bir dizinden, USB bellek aygıtındaki belirli bir dizine tüm dosyaları kopyalamak için bir çözüm arıyorum.

Benim için podcast bölümlerini indiren bir programım var.

Bilgisayara bağlandıktan sonra bu dosyaların mp3 çalarıma otomatik olarak taşınmasını (veya en azından kopyalanmasını) istiyorum.

Hem windows xp hem de linux makinelerim var, bu yüzden herhangi biri için bir çözüm benim için çalışacak.


2
Zamanlanmış bir senkronizasyondan memnun olmadığınızı varsayıyorum?
Ivo Flipse

Yanıtlar:


23

Autorun.inf dosyasını ve .bat dosyasını kullanarak Windows için kendi çözümünüzü kolayca oluşturabilirsiniz.

Bir dizini usb sürücünüze kopyalamak için bir yarasa dosyası oluşturun.

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

Yarasa dosyasını mp3 çalarınıza yerleştirin ve bu talimatları kullanarak bir autorun.inf oluşturun

Şimdi probleminiz için kendi homebuilt çözümünüz olmalı ama orada önceden yapılmış çözümler olması kesinlikle mümkün :)


harika ipucu !!!! +10
in.spite

1
Öneri için teşekkürler. Autorun.inf şu şekilde olmalıdır: [autorun] open = getpodcasts.bat action = podcast'leri oynatıcıya kopyalayın En azından winxp sp2, en üstte yeni "podcast'leri oynatıcıya" ile AutoPlayer'ı açacaktır. Bunu geçersiz kılmanın ve komut dosyasını sessizce çalıştırmaya zorlamanın bir yolu olduğunu sanmıyorum. Ayrıca, Otomatik Kullan özelliğinin açık olması gerekir. Pencerede pop ihtiyacım olan komuta sahip olmak aslında büyük bir gelişme, ama hala tam olarak aradığım şey değil.
daphshez

güzel düşünce! :) +1

3
Microsoft, otomatik çalıştırma özelliğini parmak sürücüsünde kullanma özelliğini kaldırmadı mı?
ale

10

Linux için:

Biraz Python komut sakıncası yoksa size etkinlikler için HAL dinler bir cini yazıp istediğiniz bir cihaz takılı edildikten sonra bir komut dosyası başlattı olabilir Bir örnek komut dosyası gibi görünecektir. Bu :

#!/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)

Sadece device_added()belirli bir cihazla sınırlamak ve os.system()aramayı özel komut dosyanızla değiştirmek için işlevi değiştirmeniz yeterlidir.

Sürücüyle sınırlamak için volume.uuidözellik kullanılabilir ve hal-deviceprogramla birlikte kullanılabilir özelliklerin tam listesi görüntülenebilir .

Daemon'u önyükleme sırasında başlatmak için, onu başlatın /etc/rc.local.


Bunun iyi bir cevap olup olmadığını doğrulayamıyorum, ancak tek başına sorun için bir oylamayı hak ediyorsun! Her neyse, burada olmayan programcılar üzerinde biraz daha kolay denerdim ;-) benim gibi!
Ivo Flipse

9

Windows 7 ve otomatik flash / USB aygıtınıza takın!

SyncToy'u indirin ve klasör eşleştirme ve senkronizasyon adınızı belirleyin ("SyncTest")

bkz. Nasıl Yapılır: Belgelerim'in her gece aynasını oluşturmak için SyncToy'u kullanma

  • Bilgisayar yönetim konsolunu çalıştır
  • Olay görüntüleyici / Windows günlükleri / sistemi
  • Medya ekleme etkinliğini bulma
    • “Taşınabilir Aygıt Numaralandırıcı Hizmeti hizmeti çalışma durumuna girdi.” (Bu günlük olayını tetiklemek için olay günlüğünüzü temizlemeniz ve medyayı çıkarmanız / yeniden takmanız gerekebilir)
  • Üst etkinlik penceresinde, etkinliği sağ tıklayın ve "Bu Etkinliğe Görev Ekle" yi seçin
  • Windows "Temel Görev Penceresi Oluştur" u açın
  • Görevinize bir ad verin ve sonrakine basın
  • Etkinlik bilgileri zaten doldurulmuş, sonraki
  • İşlem, "Program Başlat" ı göstermeli, sonra
  • Program Başlat penceresinde SyncToyCmd.exe (veya seçtiğiniz senkronizasyon uygulamasına) göz atın
  • Bağımsız değişkenler ekleyin. Yedek eşlemenize SyncTest adı verilirse, "-RsyncTest" girin. Tırnak eklemeyin, -R'den sonra boşluk eklemeyin, SyncToy komut satırı (veya belki Windows 7) büyük / küçük harfe duyarlıdır, bu nedenle SyncTest eşitleme eşitlemez!
  • Sonra, Bitir

Çalıştığını doğrulamak için görevi doğrudan Görev Zamanlayıcı'dan çalıştırabilirsiniz. Şimdi yaşadığım diğer tek sorun, dizüstü bilgisayarımı piller üzerinde, Görevler sekmesinde, koşullar sekmesi altında, "Görevi yalnızca bilgisayar AC gücündeyse başlat" seçeneğinin işaretini kaldırın, aksi takdirde görev yalnızca AC takılı olduğunda çalışır.

Ayrıca, USB yoklama ve bağlantı kesme / yeniden bağlanma gibi, bu görev her birkaç dakikada bir çalışacak, aslında biraz havalı, her zaman USB HDD ile otomatik senkronize ediliyor :)


2

Düzenleme: SyncBack SE'nin bir tetikleyici eylemi olduğu ortaya çıkıyor:

Profili açın, "Ne zaman" sekmesine, ardından "Ekle" ye gidin. Sürücü harfi, etiket veya seri numarasına göre belirlemenizi sağlar.

Ancak SE sürümü ücretsiz değil ve sadece Windows (sanırım)

Veya TweakUI kullanarak senkronizasyon programınız için bir Otomatik Çalıştırma etkinliği (SyncToy örneği) eklemeyi deneyebilirsiniz

  • TweakUI'yi aç
  • Bilgisayarıma git -> autorun–> işleyiciler
  • Oluştur'u tıklayın
  • Synctoy'nin bulunduğu yeri bulun (varsayılan olarak program dosyaları)
  • Program başlatıcı logosuna çift tıklayın
  • Aşağıdaki listeden tüm medya radyo düğmelerini seçin.
  • Tamam'ı tıklayın
  • Uygula'yı tıklayın.

  • Şimdi kalem sürücünüzü takın.

  • Bilgisayarımda sürücüyü sağ tıklayın ve özellikleri seçin.
  • Otomatik oynat sekmesini tıklayın
  • Açılır menüden müzik seçin.
  • "Gerçekleştirilecek eylemi seçin" radyo düğmesini tıklayın
  • Şimdi SyncToy logolu senkronizasyonu seçin
  • Açılır menü tarafından verilen diğer seçenekler için tekrarlayın
  • Uygula'yı ve ardından Tamam'ı tıklayın.
  • Çalışıp çalışmadığını görmek için sürücünüzü çıkarıp yeniden takın

USB cihazınızı bağladığınızda otomatik olarak başlayacak (başka) bir program bulamıyorum.

Hepsi senkronizasyonu başlatmak için zamanlamaya dayanır. Her programımızı planlamaya karar verebilirsiniz, USB cihazı bağlı değilse başarısız olur ve çalışırsa çalışır.

Ama dürüst olmak gerekirse, sadece senkronizasyon düğmesine tıklarsanız daha kolay olurdu, USB cihazınızı manuel olarak da takmanız gerekir.

Her neyse, hem Linux hem de Windows üzerinde çalışan bir senkronizasyon aracı buldum: Tamamen ücretsiz, Java üzerinde çalışan ve güzel bir GUI'ye sahip DirSync Pro :

*  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
bunu bir USB cihazı bağlandığında çalışmasını sağlamak için Vista ve Windows 7'deki yeni tetikleyici olayları kullanan bir schduled görevi ile birleştirebilirsiniz.
Paxxi

1
Diğer cevapta bahsedilen otomatik çalıştırma çözümü hile yapabilir
Ivo Flipse

Bir not olarak, "insert" özelliklerinin SyncBack SE 5 için yeni olduğuna inanıyorum.
daphshez

1

Steven'ın yöntemini denedim, ancak USB olayı "Olay Görüntüleyicisi / Windows Günlükleri / Sistemi" nde gösterilmiyordu (Windows 7 kullanıyorum). Biraz uğraştım ve USB ekleme olaylarının "Olay Görüntüleyicisi / Uygulama ve Hizmet Günlükleri / Microsoft / Windows / DriverFrameworks-UserMode / Operational" içinde bulunduğunu öğrendim. Önce günlüğü temizlemeyi deneyin (istediğiniz olayı daha kolay bulmak için), ardından USB flash sürücüyü takın. Günlüğü yenileyin, bir sürü olay görünmelidir. En üstteki olayı (yani en yeni olayı) seçtim ve görevi buna atadım (olay açıklamasının taktığınız belirli USB sürücüsüne özgü bir şey olduğundan emin olun).

Gerçek senkronizasyonu yapmak için ücretsiz SyncBack programını kullandım. Harika çalışıyor!


1

Anahtar klasörleri eşitlemek için birkaç toplu iş ile AUTORUN.INF kullanıyorum. Çok basit çok etkili.

Ayrıca, bir salt okunur varsa, arşivlenmiş autorun.inf dosya onun sert sözleşme usb stick virüs


1

Sadece unutmak ""ve bitirmek için ".\dectory\" ← Bu son da \eğik çizgi.

Orijinal toplu formül işe yarıyor, Sadece günler, Dizinlerde çok fazla alan var, toplu iş dosyaları ve komut istemi NEFRET.

Benimki nasıl görünüyor:

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

1

Linux altında, olayları dinlemek için sürekli çalışan bir program yerine, zaten çalışanları kullanabilirsiniz. Cihazı geçici bir konuma bağlayan udev'e bazı kancalar ekleyebilir ve daha sonra bir grup dizini senkronize etmek için rsync'i başlatabilirsiniz.

Bu arada, cihazınızın imzasına göre belirli eylemleri tanımlayabilirsiniz: belirli bir anahtar takıldığında çalışma belgelerinizi veya bir USB yığın depolama MP3 çalar takılıysa müziğinizi veya oraya bir Kindle takarken kitaplarınızı senkronize edin.


1

Raspbian Wheezy'de çalışan Raspberry Pi ile küçük bir gözetim sistemi kurarken, tüm dosyaları IP kamera tarafından yüklenen FTP klasöründen sürekli olarak taşımam gerekiyordu. Yani, ana dizine (~) komut dosyası yazdım ve cron ile dakikada bir kez çağırdım

crontab -e
*/1 * * * * sudo ~/move_images_to_usb

move_images_to_usb sıradan bash betiği, daha önce bash'da komut dosyası kullanmıyordum, ama ...

#!/bin/bash

if df | grep "sda1"
then
    mkdir /media/usb0/ipcam1
    cp -r /var/ftp /media/usb0/ipcam1
    rm /var/ftp/*
fi

Usb sürücü takıldığında, onun adı sda1 (başka bir sürücü sdb1 olacak, bu yüzden çalışmaz)


0

Karenware çoğaltıcı programını kullanıyorum. Windows için bir çok küçük yararlı programın yazarı (W98 / W2K / XP günlerinin başlarındaki PowerToys'i düşünün).

İşte bağlantı. http://www.karenware.com/powertools/ptreplicator.asp

Gecelik bir programa ayarlayın. USB sürücü takılıysa, indirme klasörünü USB içeriğiyle senkronize eder.

Bedava!


Teşekkürler; ama benim sorunum kopyanın kendisi değil (sadece bir dizinde bulunan bir grup dosya), ama bu kopyanın doğru zamanda yapılmasını sağlamak. Zamanlanmış bir görev güzel, ama tam aradığım şey değil.
daphshez

0

Bu eski bir iplik, ama bunu isteyen herkes için burada pu olacağını düşündüm. İlgili bilgileri ihtiyaçlarınıza uyacak şekilde değiştirin, ardından sizin için her şeyi yapar. Bunun ilk yinelemesini yapan /superuser//users/232313/tyler adresine teşekkür ederiz.

@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
)
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.