Rsync على نظام التشغيل Windows - تشغيل المقبس على غير المقبس

StackOverflow https://stackoverflow.com/questions/106544

  •  01-07-2019
  •  | 
  •  

سؤال

أحصل على الخطأ التالي عند محاولة تشغيل أحدث إصدار من Cygwin من rsync في نظام التشغيل Windows XP SP2.يحدث الخطأ لمحاولات المزامنتين المحليتين (أي:المصدر والوجهة على القرص الصلب المحلي فقط) والمزامنة عن بعد (باستخدام "-e ssh" من الحزمة opensh).هل هناك أي نصيحة حول كيفية إصلاحها/الحل البديل لها؟

bash-3.2$ rsync -a dir1 dir2
rsync: Failed to dup/close: Socket operation on non-socket (108)
rsync error: error in IPC code (code 14) at /home/lapo/packaging/tmp/rsync-2.6.9/pipe.c(143) [receiver=2.6.9]
rsync: read error: Connection reset by peer (104)
rsync error: error in IPC code (code 14) at /home/lapo/packaging/tmp/rsync-2.6.9/io.c(604) [sender=2.6.9]
هل كانت مفيدة؟

المحلول

ليس حقا إجابة لسؤالك، ولكن وجدت نسخة دلتا ليكون خيارًا أفضل بكثير من العبث مع Cygwin.إنه يتصل بشياطين rsync العادية أيضًا.

نصائح أخرى

من المحتمل أن يكون لديك شيء يمنع rsync.في حالتي هو برنامج مكافحة الفيروسات NOD32.يمكنك التحقق من ذلك عن طريق تشغيل rsync في "gdb" كما يلي:

$ gdb --args /usr/bin/rsync -a somedir/ anotherdir
GNU gdb 6.8.0.20080328-cvs (cygwin-special)
.....
(no debugging symbols found)
(gdb) run 

لاحظ الأمر "تشغيل" بعد بدء تشغيل gdb.سترى بعض الإخراج مثل هذا:

Starting program: /usr/bin/rsync -a somedir/ anotherdir
.....
(no debugging symbols found)
warning: NOD32 protected [MSAFD Tcpip [TCP/IP]]
warning: NOD32 protected [MSAFD Tcpip [UDP/IP]]
warning: NOD32 protected [MSAFD Tcpip [RAW/IP]]
warning: NOD32 protected [RSVP UDP Service Provider]
warning: NOD32 protected [RSVP TCP Service Provider]
(no debugging symbols found)
(no debugging symbols found)
---Type <return> to continue, or q <return> to quit---
(no debugging symbols found)
[New thread 1508.0x720]
[New thread 1508.0xeb0]
[New thread 1508.0x54c]
rsync: Failed to dup/close: Socket operation on non-socket
(108)
rsync error: error in IPC code (code 14) at
/home/lapo/packaging/rsync-3.0.4-1/src/rsync-3.0.4/pipe.c(147)
[receiver=3.0.4] 

لذلك سيتعين عليك إضافة rsync إلى قائمة الاستبعاد الخاصة بك في برنامج فحص الفيروسات (NOD32):

c:\cygwin\bin sync.exe

انتبه إلى أن خطأ طويل الأمد في تنفيذ توجيه الإخراج في Cygwin يتسبب في تعليق rsync إذا تم استخدامه من خلال اتصال SSH.

اعتبارًا من Cygwin v.1.7 يبدو أن الطريقة الوحيدة الموثوقة لنقل الكثير من البيانات باستخدام rsync هي الاتصال بخدمة rsync باستخدام بروتوكول rsync.يعد DeltaCopy مجرد غلاف جميل لهذه الطريقة.

يبدو أن بعض المستخدمين قد حققوا نجاحًا بالإضافة إلى SSH في دفع البيانات من Windows إلى Unix بدلاً من السحب من Windows على جانب Unix.في تجربتنا، لا يمكن الاعتماد على هذا أيضًا.

ابحث في Google عن cygwin وrsync وssh وpipe/hang/stall وستجد المزيد من المعلومات حول هذه المشكلة.

لقد وجدت أن هذا خطأ Winsock.لقد تأكدت من أن المشكلة تبدأ بتثبيت ATT Communcations Manager (الإصدار 6.12.0046.0) لـ Sierra Wireless Aircard (875U).قم بإلغاء تثبيت مدير الاتصالات ويختفي خطأ rsync.

بعد اتباع نصيحة @akaihola وجدت هذا مشاركة مدونة مع الحل لنفس المشكلة.أقوم بنشر الحل هنا، ولكن الاعتمادات تذهب إلى مارك أبراموفيتز

cygrunsrv --install "rsyncd" --path /usr/bin/rsync --args "--daemon --no-detach" --desc "Starts a rsync daemon for accepting incoming rsync connections" --disp "Rsync Daemon" --type auto

بالطبع أنت بحاجة إلى Cygwin مع rsync.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top