Rsync Windows yang mendukung nama file panjang, atau alternatif yang baik?


13

Saat ini saya rsync pada host Linux untuk menyalin sesuatu dari Windows ke kotak Linux saya. Tapi saya tidak bisa menyalin file dengan nama panjang.

Saya sudah mencoba DeltaCopy , cwrsync , dan cygwin . Dari apa yang saya temukan di sana semua alat ini menolak untuk menyalin file ketika panjang file menjadi panjang, ini sepertinya berada di sekitar 255 karakter.

Masalah ini diatasi di forum-forum cwrsync di sini dan itu seharusnya diperbaiki di masa mendatang kapan saja cygwin 1.7 keluar dan UTF8 didukung. Bahkan ada test build di sini .

Saya tidak terlalu nyaman menggunakan test build pada sistem produksi. Saya berharap ada yang tahu opsi rsync lain.

Sebagai alternatif untuk rsync, apakah Anda tahu alat lain yang bisa saya salin struktur direktori di Linux dari host windows yang tidak akan memiliki masalah dengan file yang panjang atau tidak bernama? Bit penting adalah bahwa saya membutuhkan alat yang dapat dengan mudah bekerja di terowongan SSH. Beberapa sistem berada di luar firewall, dan saya percaya SSH adalah terowongan yang akan saya gunakan.


FYI cwrsync telah merilis pembaruan yang didasarkan pada cygwin 1.7 yang mendukung nama file yang panjang! itefix.no/i2/node/12070
Zoredache

Jawaban:


6

Saya mungkin kehilangan intinya tetapi apakah Anda mempertimbangkan menggunakan Robocopy pada Windows. Ini mirip dengan RSync namun Anda tidak dapat menjadwalkannya dari aplikasi secara langsung.

Ini dapat diatasi dengan menulis file batch untuk salinan dan kemudian membuat Tugas Terjadwal. Robocopy gratis dan sangat kuat. Saya sering menggunakannya untuk menyalin file antara Linux dan Windows menggunakan Samba dan jaringan, dan kemampuan melanjutkan Robocopy sangat kuat.


robocopy adalah pilihan yang saya pertimbangkan, tetapi beroperasi ke arah yang salah (mendorong dari win ke lin), saya ingin menarik dari windows di Linux. Saya curiga bahwa saya mungkin harus pergi ke arah ini jika saya tidak dapat menemukan sesuatu yang lebih baik.
Zoredache

5

Aha! Anda dapat menggunakan subt dengan rsync.

Jika Anda memiliki pohon direktori yang dalam d: \ very \ long \ file \ n \ ame \ etc \ etc maka percobaan mengungkapkan bahwa Anda dapat mengganti X: ke d: \ very \ long \ file \ name \ etc lalu rsync ke dan dari / cygdrive / x / terserahlah. Ini berfungsi baik di ujung klien dan di ujung server.

Sekarang sementara Anda dapat menggunakan subst strategis untuk mengurangi panjang nama file, saya tidak tahu apakah ini memungkinkan Anda untuk memotong batas 260 karakter. Mungkin juga tidak nyaman. Layak dicoba.

John Rennie.

---- 8 <----

Lihat http://www.ratsauce.co.uk/notablog/LongFilenames.asp untuk ocehan saya tentang nama file panjang.

Saya tidak tahu cara untuk mendapatkan awalan \\? \ Ke Cygwin, dan jelas versi Cygwin saat ini tidak menggunakan awalan secara internal. Agaknya mereka menyikapi ini dalam versi baru dan itulah mengapa itu akan mendukung nama lebih dari 260 karakter. Saya menggunakan Cygwin rsync di semua tempat jadi seperti Anda, saya dengan sabar menunggu rilis.

Ada beberapa masalah lain dengan rsync Cygwin. Itu membuat ACL berantakan kecuali Anda menentukan cygwin = nontsec, dan cenderung bertahan pada direktori yang sangat besar. Dalam daftar hal yang harus saya lakukan sebelum saya mati adalah menulis rsync versi Windows asli yang tidak akan memiliki masalah ini. Saya percaya ini telah dilakukan, tetapi hanya sebagai versi komersial bukan yang domain publik.

JR


Rsync tampaknya menggantung di direktori besar karena harus membaca semua file terlebih dahulu. Masalahnya adalah bahwa windows membaca semua file terlebih dahulu, kemudian rsync mulai. Diperlukan windows beberapa menit untuk memindai direktori tergantung pada berapa banyak file yang ada.
Ryaner

Ini tidak lagi berlaku dengan rsync 3.0. Sekarang mengirim daftar file tambahan sehingga dapat mulai mengirim file lebih cepat.
James Sneeringer

2

Saya sarankan Anda mencoba Unison http://www.cis.upenn.edu/~bcpierce/unison/

Ini adalah alternatif yang sangat menarik untuk rsync karena ia juga dapat memberikan sinkronisasi dua arah (yang tidak dapat dilakukan rsync). Saya sudah berhasil menggunakannya di 2 mesin virtual dan sangat senang dengan hasilnya.

Tapi sejauh menyangkut nama file, saya tidak tahu apakah itu berfungsi seperti yang Anda inginkan.

Dari situs web resmi:

Unison adalah alat sinkronisasi file untuk Unix dan Windows. Ini memungkinkan dua replika kumpulan file dan direktori untuk disimpan pada host yang berbeda (atau disk berbeda pada host yang sama), dimodifikasi secara terpisah, dan kemudian dimutakhirkan dengan menyebarkan perubahan dalam setiap replika ke replika yang lain.


Sudahkah Anda menggunakannya dengan jalur yang lebih panjang, 250 karakter? Tampaknya satu-satunya cara untuk mendapatkannya di windows adalah melalui cygwin, yang saya percaya berarti ia akan memiliki masalah yang sama persis dengan yang saya miliki dengan cygwin rsync.
Zoredache

Saya belum menguji jalur yang panjang, tetapi Binari serempak untuk Windows dibangun menggunakan cygwin.dll (dibundel dengan binari, tidak perlu menginstal cygwin), oleh karena itu mungkin berfungsi dengan benar. Cobalah :)
Olivier Jaquemet

2

Hanya sebuah catatan bahwa saya mengalami masalah yang sama (keterbatasan pre-1.7 cygwin) dan menemukan cwrsync yang berfungsi dengan cygwin 1.7 di sini:

http://www.doering-thomas.de/page.php?seite=1&sub=6&lang=en#rsync

(Tautan asli ditemukan dari forum cwrsync)

Bukan bangunan resmi, tapi itu memecahkan masalah charset saya :)


1

http://lists.samba.org/archive/rsync/2009-March/022955.html

http://www.okisoft.co.jp/esc/utf8-cygwin/ Memiliki lapisan UTF8, yang memiliki efek samping meningkatkan ukuran jalur yang mungkin. Menurut penulisnya, jika Anda ingin menggunakan lebih banyak karakter, Anda dapat menaikkan konstanta di patch. Tampaknya itu bahkan lebih meretas.

Mungkin bukan yang terbaik untuk sinkronisasi jarak jauh, tetapi merupakan rsync windows yang mengklaim mendukung nama file yang lebih lama.


Posting ini sedikit mencemaskan saya ( cygwin.com/ml/cygwin/2006-05/msg00068.html ) - "Pada dasarnya, ada tambalan 930-baris, yang sebagian besar adalah baru. FWICS, mungkin tidak mencakup semua tempat di mana Unicode konversi mungkin diperlukan (khususnya, mengirim Unicode melalui pipa textmode kemungkinan besar akan gagal secara spektakuler) "
Zoredache

0

Jadi, jika alat-alat buruk pada Windows apakah ada cara untuk menggunakan alat Linux?

Dengan ssh - sshfs ?

Tanpa ssh - gunakan VPN dan pasang sebagai SMB?

Apa pun caranya, Anda dapat menggunakan klien rsync Linux yang lebih mampu melawan sistem file. Saya belum melakukan ini dengan data 10GB jadi YMMV. :)


Saya mencoba menarik file DARI windows ke kotak Linux saya. Plus saya benar-benar tidak ingin membangun arsip karena saya berbicara banyak data 10GB + yang ingin saya sinkronkan setiap minggu. Jika saya membuat arsip saya tidak akan mendapat manfaat dari pembaruan tambahan.
Zoredache

OK, jawaban yang direvisi.
Cawflands

0

Ini tidak akan membuat struktur file besar, tetapi untuk set data yang relatif kecil dengan nama yang panjang Anda bisa melihat menggunakan sesuatu seperti 7-Zip untuk membuat arsip yang kemudian dapat ditransfer oleh rsync. Anda mengatakan bahwa Anda perlu menarik data dari server Windows ke server Linux. Jika Anda memiliki akses shell, arsipkan data yang Anda butuhkan dalam sebuah wadah (7-zip), transfer wadah tersebut, dan perluas ketika sampai ke server. Ini mendorong masalah nama file panjang ke pengarsipan, yang saya percaya ada dukungan yang lebih baik dan alat-alat non-Cygwin.


0

Agar tidak kehilangan portabilitas, saya akan merekomendasikan Anda untuk tetap menggunakan rsync dan mencoba menyelesaikan batasan 255. Keterbatasan ini tidak lagi di dalam Windows dan dalam kode RSYNC - sebenarnya batas pada Windows adalah sekitar 2048 sekarang (jika saya ingat dengan baik).

Saya cukup yakin bahwa tidak ada port rsync selain yang ditentukan oleh Anda dan saya sarankan Anda untuk menggunakan versi uji dan melaporkan bug yang mungkin Anda temukan.

Jika Anda tidak keberatan menggunakan FTP, Anda dapat mencoba LFTP - ia memang memiliki fitur mirroring yang sangat baik tetapi tidak dibandingkan dengan rsync ketika datang ke backup / sinkronisasi.


0

Saya meretas bersama skrip yang untuk sementara dapat mengganti nama file atau direktori dengan nama yang lebih pendek sehingga rsync (dan program lain) dapat dilanjutkan. Anda dapat menggunakan ini sebagai bagian dari rantai alat yang Anda gunakan untuk menyalin file dari Linux ke Windows (rsync atau yang lain). Saya tidak tahu apa yang Anda maksud dengan "tidak biasa", jadi mungkin ini hanya membahas sebagian dari kebutuhan Anda. Tolong beri tahu saya jika ini bermanfaat bagi Anda.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.