Bisakah Robocopy memonitor file dengan selisih waktu kurang dari satu menit?

10

Robocopymemiliki opsi untuk memantau direktori sumber, dan menyalin semua file yang memiliki perubahan. Anda dapat menentukan berapa banyak perubahan dalam direktori harus terjadi sebelum menyalin (di /mon nmana njumlah perubahan) dan berapa lama untuk menunggu sebelum memindai ulang (di /mot tmana twaktu menunggu dalam hitungan menit).

Saya ingin memantau folder hampir terus menerus, karena hanya ada 1 file yang saya pindai, dan saya ingin perubahan pada dasarnya instan. Saya tidak bisa membuat monitor robocopy untuk rentang waktu kurang dari satu menit. Saya sudah mencoba /mot 0.5dan gagal. Saya juga mencoba /mot 0dan robocopy hanya setelah pemindaian sekali, tanpa pemantauan terus menerus.

Bagaimana saya bisa membuat robocopy memindai folder dekat-terus menerus, dengan penambahan waktu kurang dari 1 menit? Atau, apakah ada alat baris perintah lain yang dapat secara konstan memonitor sumber file dan menyalin perubahan secara real time?

berpikir
sumber
Apakah HARUS Robocopy?
Ƭᴇcʜιᴇ007
@ techie007 jika ada hal lain yang mencapai persyaratan yang sama, itu akan baik-baik saja, meskipun saya ingin menghindari alat pihak ketiga jika memungkinkan. Tetapi jika ada solusi sempurna yang merupakan pihak ketiga maka saya bersedia mempertimbangkannya.
nhinkle
@ techie007 - Saya memiliki masalah yang sama persis dengan nhinkle, dan saya menggunakan Robocopy dengan cara yang persis sama. Jika Anda mengetahui solusi alternatif yang berfungsi dengan baik pada Windows, saya terbuka untuk itu. Silakan bagikan dengan kami
Durden81
Menguji Freefilesync sekarang .. sepertinya itu alat yang saya butuhkan.
Durden81

Jawaban:

8

Robocopy

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

Karena hanya menerima menit sebagai argumen, saya kira Anda tidak bisa memaksanya untuk berjalan lebih sering. Namun Anda bisa, menjalankannya menggunakan file batch dan membiarkan waktu & perulangan terjadi dalam file batch atau dalam tugas yang dijadwalkan daripada dalam robocopy.

Anirudh Ramanathan
sumber
1
ya, saya menggunakan "ping -n 1 -w 500 1.2.3.4> NUL" untuk tidur setengah detik, lalu lingkarkan dengan: LABEL dan pernyataan GOTO (dalam cmd)
Stig Eide
13

Tag Anda menyatakan Anda menggunakan Windows 8. Ini bagus, karena Anda memiliki alat hebat yaitu PowerShell, dan cmdlet kecil praktis bernama Register-ObjectEvent.

Buat file teks, ubah ekstensi menjadi .ps1, rekatkan skrip di bawah ini ke dalam file. Ubah $watchedFoldervariabel ke folder yang ingin Anda tonton. Ubah fungsi Do-Something untuk memasukkan perintah robocopy Anda atau apa pun. Jalankan skrip, selama skrip berjalan fungsi tersebut akan berjalan (hampir seketika!) Setiap kali file atau folder diubah dalam folder yang ditonton.

Anda bisa menjalankan skrip ini saat startup Windows dan skrip ini akan berjalan di latar belakang setiap saat tanpa menggunakan timer.

$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

Lihat Beraksi


  1. Jalankan skrip yang disimpan.
    Jalankan skrip yang disimpan.

  2. Anda akan melihat flash jendela konsol, setelah mereka menutup satu-satunya indikasi itu berjalan akan menjadi beberapa proses baru.
    masukkan deskripsi gambar di sini

  3. Lakukan beberapa hal di desktop Anda untuk menguji.
    masukkan deskripsi gambar di sini

  4. Akhiri proses PowerShell yang dibuat saat Anda tidak lagi ingin menjalankannya.

Some Background Background - Jika Anda tidak terbiasa dengan alat yang digunakan dalam jawaban ini.


  • Untuk info lebih lanjut tentang System.IO.FileSystemWatchersilakan kunjungi halaman MSDN -nya .
  • Untuk beberapa contoh acara lainnya di PowerShell, kunjungi blog ini yang menurut saya bermanfaat .
  • Untuk primer pada Windows PowerShell, saya menemukan situs ini bermanfaat (saya suka tips mereka hari ini)
  • Jika Anda menggunakan versi windows yang lebih lama atau karena alasan tertentu Anda belum menginstal PowerShell, Anda dapat mengunduh Windows Management Framework 4.0 .
Yusuf
sumber
1
Ini jawaban terbaik. Solusi ini adalah event-driven, yang berarti tidak pernah menggunakan cpu sampai terjadi perubahan, dan kemudian program berjalan segera sebagai tanggapan. Juga, penulisan yang bagus.
CoolHandLouis
5

DSynchronize adalah utilitas yang berdiri sendiri yang memungkinkan Anda menyinkronkan secara berkala dua atau lebih folder pada Hard Disk, Floppy Disk, LAN, USB Key, CD-DVD (dengan perangkat lunak penulisan paket) dan server FTP. Bukan persis pertanyaannya, tapi hal terdekat yang bisa kutemukan.

Saya juga sedang mencari solusi untuk waktu minimum 1 menit di Robocopy dan menemukan pertanyaan berusia dua tahun ini. Saya akhirnya menyarankan perangkat lunak ini kepada saya, dan itulah yang saya gunakan. Sebagai catatan, saya tidak memiliki afiliasi dengan perangkat lunak.

Pro:

  • Memiliki sinkronisasi waktu-nyata.
  • Dapat menambahkan beberapa pasangan folder, dan memilih pasangan mana yang aktif pada waktu tertentu menggunakan kotak centang di sebelahnya.
  • Tidak ada penginstal, program mandiri.
  • Anda dapat mengecualikan atau memasukkan file melalui pola atau dengan waktu yang dimodifikasi dengan mengklik tombol 'filter'.
  • (lainnya; lihat tangkapan layar di bawah. Kotak centang dan tombol memiliki tooltips bantuan tambahan.)

Cons:

  • Apakah utilitas GUI, tidak ada switch baris perintah yang tersedia
  • Pasangan folder semua memiliki pengaturan yang sama

tangkapan layar

Opsi sinkronisasi waktu nyata ditandai pada tangkapan layar di bawah bagian 'Opsi Khusus'. Inilah yang tampaknya digambarkan sebagai pertanyaan. Jika tidak dicentang dan Anda tidak memiliki penghitung waktu, maka Anda dapat mengklik tombol 'Sinkronkan' untuk memulai sinkronisasi satu kali.

Cara menyinkronkan dua folder:

  • Pilih folder sumber yang ingin Anda monitor dengan menggunakan dialog browse di sudut kiri atas.
  • Pilih folder tujuan tempat Anda ingin menyalin perubahan di sudut kanan atas.
  • (Opsional) Jika Anda mengetik secara manual di jalur folder alih-alih menggunakan dialog penelusuran, klik tombol 'TEST' di antara dua kotak di bagian atas untuk melihat apakah folder tersebut benar-benar ada. Anda juga akan ingin memeriksa 'Buat folder jika tidak ada' dalam banyak kasus untuk memastikan folder baru disalin, karena tidak dicentang secara default sehingga program hanya menyalin file secara default.
  • Centang kotak 'Sinkronisasi waktu'. Sinkronisasi sekarang aktif, dan semua perubahan dari folder sisi kiri akan disalin ke folder sisi kanan.

Saya juga menemukan video YouTube ini , yang menunjukkan perangkat lunak beraksi. Ini menunjukkan versi yang lebih lama dan opsi tidak di tempat yang sama, tetapi memberikan kesan bagaimana perangkat lunak bekerja.

Ashley Wilson
sumber
Pertanyaannya adalah bagaimana membuat sesuatu terjadi (dalam Robocopy). Tidak masalah untuk menyarankan solusi alternatif, menjelaskan cara mencapai hasil yang sama menggunakan alat lain. Namun, ini tidak menjelaskan bagaimana sebenarnya memecahkan masalah.
fixer1234
@ fixer1234 Saya awalnya hanya berencana untuk mengomentari pertanyaan, tetapi ternyata akun saya terlalu baru untuk melakukan itu (saya bisa mengomentari jawaban saya sendiri, tampaknya). Saya juga sedang mencari solusi untuk waktu minimum 1 menit di robocopy dan menemukan pertanyaan berusia dua tahun ini. Saya akhirnya menyarankan perangkat lunak di atas kepada saya, dan itulah yang saya gunakan. Berpikir orang lain dalam situasi yang sama akan menemukannya berguna, itu saja. Untuk tugas yang tampaknya sederhana (sinkronisasi folder), menakjubkan betapa Anda harus mencari untuk menemukan solusi ..
Ashley Wilson
Adapun kejelasan jawaban saya - saya berharap saya bisa melampirkan tangkapan layar (sekali lagi, akun terlalu baru untuk memungkinkan itu) yang akan membuatnya jauh lebih jelas - ini adalah GUI satu layar dan semua opsi terlihat jelas dan sederhana untuk mengerti.
Ashley Wilson
Jika Anda menggunakan layanan berbagi file apa pun, cukup tambahkan tautan ke gambar Anda dan seseorang akan menanamkannya untuk Anda. Jika Anda tidak menggunakannya secara teratur, ada banyak yang gratis (seperti imgur.com).
fixer1234
Ini adalah tangkapan layar: i.imgur.com/F7heg9A.png
Ashley Wilson