Robocopy dosyaları bir dakikadan daha kısa bir zaman diliminde izleyebilir mi?


10

Robocopykaynak dizini izleme ve değişiklik içeren dosyaların üzerine kopyalama seçeneğine sahiptir. Sen kopyalayarak (önce dizinde birçok değişiklik gerçekleşmesi gerekir nasıl belirleyebilirsiniz /mon nnerede nve ne kadar süre rescanning (önce beklenecek değişikliklerin sayısıdır) /mot tnerede tdakika beklemek zamanı).

Bir klasörü neredeyse sürekli olarak izlemek istiyorum, çünkü aradığım sadece 1 dosya var ve değişikliklerin temelde anında olmasını istiyorum. Bir dakikadan daha kısa bir süre için robokopi monitörü yapamıyorum. Denedim /mot 0.5ve başarısız oldu. Ben de denedim /mot 0ve sürekli tarama yapmadan, bir kez taramadan sonra robokopi çıkar.

Robokopi taramasını, 1 dakikadan daha kısa zaman artışlarıyla, neredeyse sürekli bir klasörde nasıl tarayabilirim? Alternatif olarak, bir dosya kaynağını sürekli izleyebilen ve değişiklikleri gerçek zamanlı olarak kopyalayabilen başka bir komut satırı aracı var mı?


Robocopy Olmalı mı?
Octcʜιᴇ007

@ techie007 Aynı gereksinimleri karşılayan başka bir şey varsa, bu da iyi olurdu, ancak mümkünse üçüncü taraf araçlarından kaçınmak istiyorum. Ama üçüncü taraf olan mükemmel bir çözüm varsa, bunu düşünmeye hazırım.
nhinkle

@ techie007 - Nhinkle ile aynı problemim var ve Robocopy'yi aynı şekilde kullanıyorum. Windows'da iyi çalışan alternatif bir çözüm biliyorsanız, buna açıkım. Lütfen bizimle paylaşın
Durden81

Freefilesync'i şimdi test ediyorum ... ihtiyacım olan araç gibi görünüyor.
Durden81

Yanıtlar:


8

Robocopy

/mot:<M>
Monitors source, and runs again in M minutes if changes are detected.

Birkaç dakikayı argüman olarak kabul ettiğinden, sanırım daha sık çalışmaya zorlayamazsınız. Ancak, bunu bir toplu iş dosyası kullanarak çalıştırabilir ve zamanlama ve döngünün toplu iş dosyasında veya robokopi yerine zamanlanmış görevlerde gerçekleşmesine izin verebilirsiniz.


1
evet, kullanmak "ping -n 1 -w 500 1.2.3.4> NUL" uyku yarısına ikinci, daha sonra birlikte döngü onu: LABEL ve (cmd) bir GOTO deyimi
Stig Eide

14

Etiketleriniz Windows 8 kullandığınızı belirtir. Bu iyidir, çünkü PowerShell olan harika bir araca ve adında kullanışlı küçük bir cmdlet'e sahipsiniz Register-ObjectEvent.

Bir metin dosyası oluşturun, uzantıyı olarak değiştirin, .ps1aşağıdaki komut dosyasını dosyaya yapıştırın. $watchedFolderDeğişkeni izlemek istediğiniz klasöre değiştirin . Do-Something işlevini, robocopy komutunuzu içerecek şekilde değiştirin. Betik çalıştığı sürece betiği çalıştırın, izlenen klasörde bir dosya veya klasör her değiştirildiğinde bu işlev (neredeyse anında!) Çalışacaktır.

Bu komut dosyasını Windows başlangıcında çalıştırabilirsiniz ve bir zamanlayıcı kullanmadan her zaman arka planda çalışır.

$block = {    
    function Do-Something
    {
        param ($message, $event)
        # function to call when event is raised
        # do a robocopy or whatever

        Start-Process cmd.exe "/C echo $("{0} {1}" -f $event.SourceEventArgs.FullPath, $message)&pause"
    }

    $watchedFolder = "C:\Users\Admin-PC\Desktop"
    $watcher = New-Object System.IO.FileSystemWatcher
    $watcher.Path = $watchedFolder

    Register-ObjectEvent -InputObject $watcher -EventName Created -SourceIdentifier File.Created -Action { Do-Something "Created" $event }
    Register-ObjectEvent -InputObject $watcher -EventName Deleted -SourceIdentifier File.Deleted -Action { Do-Something "Deleted" $event }
    Register-ObjectEvent -InputObject $watcher -EventName Changed -SourceIdentifier File.Changed -Action { Do-Something "Changed" $event }
    Register-ObjectEvent -InputObject $watcher -EventName Renamed -SourceIdentifier File.Renamed -Action { Do-Something "Renamed" $event }
}

$encodedBlock = [Convert]::ToBase64String([Text.Encoding]::Unicode.GetBytes($block))

Start-Process PowerShell.exe -verb Runas -argumentlist '-WindowStyle Hidden', '-NoExit', '-EncodedCommand', $encodedBlock

Hareket Halinde Görün


  1. Kaydedilen komut dosyasını çalıştırın.
    Kaydedilen komut dosyasını çalıştırın.

  2. Bir konsol penceresi flaşı göreceksiniz, çalıştıktan sonra sadece birkaç yeni işlem olacağını gösterdikten sonra.
    resim açıklamasını buraya girin

  3. Test etmek için masaüstünüzde bazı şeyler yapın.
    resim açıklamasını buraya girin

  4. Oluşturulan PowerShell işlemini artık çalışmasını istemediğinizde sonlandırın.

Bazı Arka Plan Bilgileri - Bu cevapta kullanılan araçlara aşina değilseniz.



1
Bu en iyi cevap. Bu çözüm olay güdümlüdür, yani bir değişiklik gerçekleşene kadar asla cpu kullanmaz ve program hemen yanıt verir. Ayrıca, mükemmel yazma.
CoolHandLouis

5

DSynchronize , Sabit Disk, Disket, LAN, USB Anahtarı, CD-DVD (paket yazma yazılımı ile) ve FTP sunucusundaki iki veya daha fazla klasörü düzenli olarak senkronize etmenizi sağlayan bağımsız bir yardımcı programdır. Sorunun tam olarak ne olduğu değil, bulabildiğim en yakın şey.

Ben de Robocopy'de 1 dakikalık asgari süreye bir çözüm arıyordum ve bu iki yıllık soruyu buldum. Bu yazılımın bana önerilmesini sağladım ve bunu kullanıyorum. Kayıt için, yazılımla hiçbir ilişkim yok.

Artıları:

  • Gerçek zamanlı senkronizasyona sahiptir.
  • Birden çok klasör çifti ekleyebilir ve belirli bir zamanda yanlarında bulunan onay kutularını kullanarak hangi çiftlerin etkin olacağını seçebilir.
  • Yükleyici yok, bağımsız program.
  • 'Filtre' düğmesini tıklayarak dosyaları kalıplar arasında veya değiştirilen süre içinde hariç tutabilir veya dahil edebilirsiniz.
  • (diğerleri; aşağıdaki ekran görüntüsüne bakın. Onay kutularının ve düğmelerin ek yardım ipuçları vardır.)

Eksileri:

  • Bir GUI yardımcı programıdır, komut satırı anahtarı yoktur
  • Klasör çiftlerinin tümü aynı ayarları paylaşır

ekran görüntüsü

Gerçek zamanlı senkronizasyon seçeneği, ekran görüntüsünde 'Özel Seçenekler' bölümünün altında işaretlenmiştir. Sorunun amaç olarak tanımladığı şey budur. İşaretli değilse ve bir zamanlayıcı ayarlanmamışsa, bir kerelik senkronizasyonu başlatmak için 'Senkronize Et' düğmesini tıklayabilirsiniz.

İki klasör nasıl senkronize edilir:

  • Sol üst köşedeki göz atma iletişim kutusunu kullanarak izlemek istediğiniz kaynak klasörü seçin.
  • Değişiklikleri sağ üst köşeye kopyalamak istediğiniz bir hedef klasör seçin.
  • (İsteğe bağlı) Tarama iletişim kutusunu kullanmak yerine klasör yolunu el ile yazdıysanız, bu klasörlerin gerçekten var olup olmadığını görmek için üstteki iki kutu arasındaki 'TEST' düğmesini tıklayın. Ayrıca, varsayılan olarak işaretlenmediği ve programın dosyaları varsayılan olarak kopyaladığı için yeni klasörlerin kopyalandığından emin olmak için çoğu durumda 'Klasör oluştur' seçeneğini işaretlemek isteyeceksiniz.
  • 'Gerçek zamanlı senkronizasyon' onay kutusunu işaretleyin. Senkronizasyon şimdi etkin ve sol taraftaki klasördeki tüm değişiklikler sağ taraftaki klasöre kopyalanacak.

Yazılımı çalışırken gösteren bu YouTube videosunu da buldum . Eski bir sürümü gösterir ve seçenekler aynı yerde değildir, ancak yazılımın nasıl çalıştığına dair bir fikir verir.


Soru, bir şeyin nasıl gerçekleşeceğini soruyor (Robocopy'de). Aynı sonucun başka bir araçla nasıl gerçekleştirileceğini açıklayan alternatif bir çözüm önermek iyidir. Ancak bu, sorunun nasıl çözüleceğini açıklamaz.
fixer1234 20:15

@ fixer1234 Aslında sadece soru hakkında yorum yapmayı planlıyordum, ama görünüşe göre hesabım bunu yapmak için çok yeni (görünüşe göre kendi cevabım hakkında yorum yapabilirim). Ben de robokopide 1 dakikalık minimum süreye bir çözüm arıyordum ve bu iki yıllık soruyu buldum. Yukarıdaki yazılımın bana önerilmesini sağladım ve bunu kullanıyorum. Aynı durumdaki diğerlerinin bunu yararlı bulacağını düşündüm, hepsi bu. Görünüşte basit bir görev için (klasör senkronizasyonu), bir çözüm bulmak için ne kadar aramak zorunda olduğunuz şaşırtıcı.
Ashley Wilson

Cevabımın açıklığına gelince - Keşke ekran görüntüsünü ekleyebilseydim (tekrar, buna izin vermek için çok yeni) bu da çok daha net hale getirecekti - bu tek ekranlı bir GUI ve tüm seçenekler açıkça görülebilir ve basit anlamak.
Ashley Wilson

Herhangi bir dosya paylaşım hizmeti kullanıyorsanız, resminize bir bağlantı ekleyin, birisi sizin için gömecektir. Düzenli olarak kullanmıyorsanız, bir sürü ücretsiz (imgur.com gibi) vardır.
fixer1234 20:15

Bu ekran görüntüsü: i.imgur.com/F7heg9A.png
Ashley Wilson
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.