Apakah ada cara untuk menyalin hanya mengubah atau file baru?

57

Saya mencoba untuk menyebarkan situs web dari desktop saya ke server web saya dan sekarang saya melakukan ini:

 xcopy C:\source X:\destination /s

Desktop saya adalah mesin Windows XP, dan saya perlu menyalin ke mesin Windows Server 2008, tetapi ini menyalin semua dan seluruh situs sangat besar dan butuh waktu yang sangat lama untuk menyelesaikan penyalinan.

Apakah ada cara untuk secara khusus menyalin file baru atau yang diperbarui? Saya melihat Anda dapat mengirimkan tanggal yang telah diubah, tetapi saya ingin melihat apakah ada cara yang lebih sederhana untuk membandingkan dengan file tujuan ...

Juga, saya terbuka untuk menggunakan apa pun di luar xcopy yang dapat melakukan pekerjaan juga ...

leora
sumber

Jawaban:

97

Dari dokumentasi XCOPY :

/ d [: mm-dd-yyyy]: Salinan file sumber berubah pada atau setelah tanggal yang ditentukan saja. Jika Anda tidak menyertakan nilai mm-dd-yyyy, xcopy menyalin semua file Sumber yang lebih baru dari file Tujuan yang ada. Opsi baris perintah ini memungkinkan Anda untuk memperbarui file yang telah berubah.

Jadi, dengan contoh Anda, seharusnya dibaca:

xcopy C:\source X:\destination /s /d
Menandai
sumber
2
tanda "/ d" sepertinya kamu harus memberikannya kencan. seperti yang disebutkan dalam pertanyaan, saya tidak memiliki batas waktu dalam pikiran. saya hanya ingin menyalin file baru dan yang diperbarui
leora
10
Tidak, tanggalnya opsional! Itu sebabnya itu dalam tanda kurung. Apakah Anda benar-benar membaca kalimat itu? Dikatakan itu melakukan persis apa yang Anda inginkan!
Markus
4
Satu-satunya hal yang perlu diperhatikan dengan jawaban ini adalah bahwa server web dan workstation Anda diatur ke waktu yang sama! Jika keduanya tidak menggunakan NTP, ini bisa kehilangan file atau menyalin lebih banyak file dari yang diperlukan.
CarlF
5
Meskipun dokumentasi menyatakannya dengan tepat, mudah untuk mengabaikannya /dkarena tanggal tersebut tidak terlalu penting karena tanggal adalah opsional, kemudian lihat opsi lain dan berpikir tidak ada solusi. :-)
Stéphane Gourichon
2
Jika file tidak ada di folder tujuan, tampaknya / D tanpa tanggal yang ditentukan AKAN menyalinnya, yang mungkin bukan hasil yang diinginkan.
tulang
24

Robocopy juga merupakan alternatif yang baik:

Secara default Robocopy hanya akan menyalin file jika sumber dan tujuan memiliki cap waktu atau ukuran file yang berbeda.

Plus, Anda dapat melakukan lebih banyak hal - perintah mirror berguna untuk situs web tempat Anda menghapus file juga.

Mat
sumber
Terima kasih telah menyebutkan robocopy - selalu menyenangkan untuk mempelajari beberapa utilitas baru yang tersedia.
Casper Leon Nielsen
3

Gunakan opsi / A. Semua file baru atau yang dimodifikasi akan memiliki set atribut arsip.

Periksa tautan di bawah ini untuk perincian:

Sintaks dan contoh perintah xcopy

Giri
sumber
1
Ya, tetapi kecuali Anda xcopy /M, maka file sumber akan tetap memiliki atribut arsip yang ditetapkan setelah Anda menyalinnya, dan akan disalin di lain waktu. Membutuhkan akses tulis ke file sumber.
Nigel Touch
2

Saya memiliki tugas berikut yang dijadwalkan untuk ~ 80k file dan ~ 2k folder:

xcopy \\sourceserver\share\ Q:\backuptarget\folder\ /i /d /y /he /C /EXCLUDE:C:\backup\list.txt > C:\backup\backup.log

opsi / C melanjutkan salinan bahkan jika "akses ditolak" ke file atau folder karena terbuka atau tidak memiliki izin di bawah akun layanan Anda menjalankan tugas yang dijadwalkan ini di bawah.

">" menimpa log setiap kali jika Anda ingin menambahkan Anda dapat menggunakan pipa ">>".


sumber
0

Ada rsync , tapi saya belum pernah menggunakan Windows. Cara saya biasanya menggunakannya di Linux adalah:

rsync -avuz src/ remote:dst/

yang hanya mengirim pembaruan (file baru dan yang dimodifikasi).

jcomeau_ictx
sumber
-1

Sinkronisasi BitTorrent bekerja dengan sangat baik. Ini akan diperbarui secara otomatis setiap kali Anda mengubah file. Peer to peer. Perbarui beberapa lokasi sekaligus jika perlu. Mudah digunakan.

Jon49
sumber