it-swarm-pt.tech

Como posso copiar arquivos automaticamente para uma unidade USB quando a conecto ao meu computador?

Estou procurando uma solução para copiar todos os arquivos de um diretório específico no disco rígido, para um diretório específico em um dispositivo de memória USB, uma vez que este dispositivo esteja conectado.

Eu tenho um programa que baixa episódios de podcast para mim.

Gostaria que esses arquivos fossem movidos automaticamente (ou pelo menos copiados) para o meu mp3 player depois que eu o conectar ao computador.

Eu tenho máquinas windows xp e linux, então uma solução para qualquer uma delas funcionará para mim.

17
daphshez

Você pode facilmente criar sua própria solução para Windows usando o autorun.inf e um arquivo .bat.

Crie um arquivo bat para copiar um diretório para o seu drive USB.

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

Coloque o arquivo bat no seu mp3 player e crie um autorun.inf usando estas instruções

Agora você deve ter sua própria solução caseira para o seu problema, mas certamente é possível que haja soluções pré-fabricadas por aí :)

23
Paxxi

Para Linux:

Se você não se importa com um pouco de script Python, pode escrever um daemon que escute HAL para eventos e, em seguida, inicia um script assim que um dispositivo de sua escolha for conectado. Um exemplo de script seria: este :

#!/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 __== '__main__':
    m = DeviceManager()

    mainloop = gobject.MainLoop()
    try:
        mainloop.run()
    except KeyboardInterrupt:
        mainloop.quit()
        print 'Exiting...'
        sys.exit(0)

Você apenas precisa modificar a função device_added() para limitá-la ao dispositivo específico e substituir a chamada os.system() pelo seu script personalizado.

Para limitá-lo à unidade, a propriedade volume.uuid pode ser usada e uma lista completa de propriedades disponíveis pode ser exibida com o programa hal-device.

Para iniciar o daemon na inicialização, basta iniciá-lo em /etc/rc.local.

10
Grumbel

Windows 7 e sincronize automaticamente com o dispositivo flash/USB ao inserir!

Faça o download do SyncToy e estabeleça o pareamento da pasta e o nome da sincronização ("SyncTest")

consulte: Como fazer: Usando o SyncToy para criar um espelho noturno dos Meus Documentos

  • Execute o console de gerenciamento do computador
  • Visualizador de eventos/logs do Windows/sistema
  • Encontre o evento de inserção de mídia
    • “O serviço do Serviço de Enumerador de Dispositivos Portáteis entrou no estado de execução.” (Pode ser necessário limpar o log de eventos e ejetar/reinserir sua mídia para acionar esse evento de log)
  • Na janela superior do evento, clique com o botão direito do mouse no evento e selecione "Anexar Tarefa a Este Evento"
  • O Windows abre "Criar janela de tarefas básicas"
  • Dê um nome à sua tarefa e clique em Avançar
  • As informações do evento já estão preenchidas, a seguir
  • A ação deve mostrar "Iniciar um programa", próxima
  • Na janela Iniciar um programa, navegue até SyncToyCmd.exe (ou o aplicativo de sincronização escolhido)
  • Adicione argumentos. Se o seu emparelhamento de backup for chamado SyncTest, digite "-RsyncTest". Não adicione aspas, não adicione espaço depois que a linha de comando -R, SyncToy (ou talvez o Windows 7) for sensível a maiúsculas e minúsculas, para que o SyncTest não seja igual ao sincronismo!
  • Em seguida, Concluir

Você pode executar a tarefa diretamente no Agendador de tarefas para verificar se funciona. Agora, o único outro problema que tive foi executar meu laptop com baterias. No Gerenciador de tarefas, na guia Condições, desmarque a opção "Iniciar a tarefa apenas se o computador estiver com energia CA", caso contrário, a tarefa só será executada quando o CA estiver conectado.

Além disso, à medida que o USB pesquisa e desconecta/reconecta, essa tarefa é executada a cada dois minutos, na verdade é bem legal, é sincronizada automaticamente com o HDD USB o tempo todo :)

8
steven Teal

Editar: verifica-se que o SyncBack SE tem uma ação de gatilho:

Abra o Perfil, vá para a aba “Quando” e depois para “Inserir”. Permite especificar por letra da unidade, etiqueta ou número de série.

No entanto, a versão SE não é gratuita e apenas o Windows (eu acho)

Ou você pode tentar adicionar um evento de execução automática para o seu programa de sincronização (exemplo para SyncToy) usando o TweakUI

  • Abra o TweakUI
  • Vá para o meu computador -> execução automática -> manipuladores
  • Clique em criar
  • Encontre onde o Synctoy está localizado (arquivos de programa como padrão)
  • Clique duas vezes no logotipo do iniciador do programa
  • Selecione todos os botões de opção de mídia na lista abaixo.
  • Clique OK
  • Clique em Aplicar.

  • Agora conecte seu pen drive.

  • No meu computador, clique com o botão direito do mouse na unidade e selecione Propriedades.
  • Clique na guia reprodução automática
  • Selecione música no menu suspenso.
  • Clique no botão de opção "selecionar ação a ser executada"
  • Agora selecione a sincronização com o logotipo SyncToy
  • Repita o procedimento para as outras opções fornecidas no menu suspenso
  • Clique em Aplicar e ok.
  • Remova e reinsira sua unidade para verificar se ela funcionou

Não consigo encontrar nenhum outro programa que seja iniciado automaticamente quando você conectar o seu dispositivo USB.

Todos eles dependem do agendamento para iniciar a sincronização. Você pode optar por agendá-lo todos os nossos, simplesmente falhará se o dispositivo USB não estiver conectado e, se estiver, será executado.

Mas, para ser sincero, seria mais fácil se você simplesmente clicasse no botão de sincronização, também teria que conectar seu dispositivo USB manualmente.

Enfim, eu também encontrei uma ferramenta de sincronização que roda tanto no Linux quanto no Windows: DirSync Pro que é totalmente gratuito, roda em [Java] e tem uma interface gráfica agradável:

*  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

Eu apenas uso um AUTORUN.INF com alguns lotes para sincronizar pastas de chaves. Muito simples, muito eficaz.

Além disso, se você tiver apenas um arquivo de leitura, o arquivo autorun.inf arquivará seus

1
Lightly Salted

No Linux, em vez de ter um programa em execução continuamente para ouvir eventos, você pode usar os que já estão em execução. Você pode adicionar alguns ganchos ao udev que montam o dispositivo em um local temporário e, em seguida, iniciam o rsync para sincronizar vários diretórios.

A propósito, você pode definir ações específicas de acordo com a assinatura do seu dispositivo: sincronize seus documentos de trabalho quando uma chave específica é inserida, ou sua música se um MP3 player de armazenamento em massa USB estiver inserido, ou seus livros ao conectar um Kindle.

1
Daduke

Quando eu estava configurando pouco sistema de vigilância com o Raspberry Pi, que rodava no Raspbian Wheezy, eu precisava mover constantemente todos os arquivos da pasta FTP que foi carregada pela câmera IP. Então, eu escrevi o script no diretório inicial (~) e o chamei uma vez por minuto com cron

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

move_images_to_usb é um script comum do bash, eu não estava usando scripts antes no bash, mas ...

#!/bin/bash

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

Quando o drive USB é inserido, ele é nomeado sda1 (outro drive será sdb1, portanto não funcionará)

1
57ar7up

Você está simplesmente esquecendo de "" e finalizando ".\dectory\" ← Essa extremidade \ também.

A fórmula do lote original funciona: são apenas alguns dias. Existem muitos espaços em diretórios, arquivos em lote e o prompt de comando ÓDIO.

Como está o meu:

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

Tentei o método de Steven, mas o evento USB não estava aparecendo em "Visualizador de Eventos/Logs do Windows/Sistema" (estou usando o Windows 7). Eu dei uma espiada e descobri que os eventos de inserção USB estão localizados em "Visualizador de Eventos/Logs de Aplicativos e Serviços/Microsoft/Windows/DriverFrameworks-UserMode/Operational". Tente limpar o registro primeiro (apenas para facilitar a localização do evento desejado) e insira a unidade flash USB. Atualize o log e vários eventos deverão aparecer. Escolhi o evento mais importante (ou seja, o mais recente) e atribuí a tarefa a ele (verifique se a descrição do evento parece ter algo específico para a unidade USB específica que você inseriu).

Eu usei o programa SyncBack gratuito para fazer a sincronização real. Funciona bem!

1
GordonM

Este é um tópico antigo, mas eu pensei em colocar isso aqui para quem quiser. Altere as informações relevantes para atender às suas necessidades, para que tudo faça por você. Crédito para https://superuser.com/users/232313/tyler quem fez a primeira iteração disso.

@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

Eu uso um programa replicador da Karenware. Ela é a autora de vários pequenos programas úteis para Windows (pense em PowerToys desde os primeiros dias do W98/W2K/XP).

Aqui está o link. http://www.karenware.com/powertools/ptreplicator.asp

Configure em um horário noturno. Se a unidade USB estiver conectada, sincronizará a pasta de download com o conteúdo USB.

É grátis!

0
Steve Kalman