ফাইলগুলি সফলভাবে স্থানান্তর না করা পর্যন্ত কীভাবে বারবার আরএসসিএন কল করা যায়


27

আমি একটি রিমোট সার্ভার থেকে ফাইলগুলি সিঙ্ক্রোনাইজ করার চেষ্টা করছি যা নির্ভরযোগ্য নয়, যার অর্থ সংযোগটি "এলোমেলোভাবে" এর সাথে ব্যর্থ হয়

rsync: সংযোগ অপ্রত্যাশিতভাবে বন্ধ

Rsync কে - পার্টিশিয়াল দিয়ে ডাকা হয়, সুতরাং আমি ফাইলগুলি পুরোপুরি স্থানান্তর না হওয়া পর্যন্ত একটি লুপে আরএসসিঙ্ক কল করতে সক্ষম হতে চাই। আরএসসিএনকে আবার চেষ্টা করার জন্য বলার মতো পতাকা নেই বলে মনে হচ্ছে।

এটির স্ক্রিপ্ট করার সর্বোত্তম উপায় কী হবে? লুপ জন্য একটি বাশ?


1
নীচের উত্তরগুলি সহায়ক হওয়া সত্ত্বেও এটি কেন ব্যর্থ হচ্ছে তা খুঁজে বের করার এবং এটি বন্ধ করার জন্য এটি আরও ভাল ধারণা হতে পারে। আমি ধরে নিয়েছি যে আপনি সার্ভার, ক্লায়েন্ট এবং নেটওয়ার্কের মধ্যে নিয়ন্ত্রণ রেখেছেন, তাই এটি কীভাবে বন্ধ ছিল তা দেখতে আপনি বিভিন্ন জায়গায় tcpdump চালাতে পারেন। সম্ভবত আপনার কোনও ফায়ারওয়াল বা ভিপিএন ডিভাইস সংযোগটি বন্ধ করছে?
MarkR

এটির সাথে সংযুক্ত হওয়া সার্ভারটি একটি ভাগ করা হোস্ট, সুতরাং এতে আমার রুট অ্যাক্সেস নেই। কেন এটি বন্ধ হচ্ছে তা আমি খতিয়ে দেখতে পারি তবে আপাতত এটিকে আবার চেষ্টা করার জন্য আমি বেশি খুশি। যাইহোক ধন্যবাদ মাথা আপ করার জন্য
ব্রুনো লোপস

আমি আবিষ্কার করে চমকে গিয়েছিলাম যে রিসাইক আসলেই আবার চেষ্টা করার ক্ষমতা রাখেনি!
মাইকেল

rsync - পার্টিশিয়াল - অ্যাপেন্ডে পুনরায় চেষ্টা করার ক্ষমতা, ম্যানুয়ালি বা স্ক্রিপ্টে রিটার্ন কোডটি যাচাই করার ক্ষমতা রয়েছে। এর সদৃশ: superuser.com/questions/302842/…
রিকফুসুসা

উত্তর:


29

আপনি যদি একটি সিঙ্কে সমস্ত কিছু সিঙ্ক করে চলেছেন তবে আরএসসিএনসি আপনাকে একটি সফল রিটার্ন কোড না দেওয়া পর্যন্ত একটি লুপে rsync কল করুন।

কিছুটা এইরকম:

RC=1 
while [[ $RC -ne 0 ]]
do
   rsync -a .....   
   RC=$?
done

এটি লুপ করবে, আরএসসিএনকে কল করবে, যতক্ষণ না এটি 0 টির একটি রিটার্ন কোড দেয় You


28
আপনি ঠিক যখন লিখতে পারেন! rsync -a ....; 5 ঘুমাও; সম্পন্ন
জাস্টিন

1
আপনি কীভাবে এটি ব্যবহার করেন তা সম্পর্কে যত্নবান হন, উদাহরণস্বরূপ, যদি ক্রোন এর মাধ্যমে এটি চালানোর চেষ্টা করা হয় তবে আপনি সম্মতিযুক্ত সমস্যাগুলির মধ্যে চলে যেতে পারেন।
কেইরান হোলওয়ে

3
যদি কোনও অ-ট্রানজিট ত্রুটি না থাকে তবে এটি একটি অসীম লুপে পরিণত হবে (উদাহরণস্বরূপ ফাইলগুলি পড়তে বা লেখার ক্ষেত্রে কোনও অনুমতি ত্রুটি)। আমি নির্দিষ্ট নেটওয়ার্ক ত্রুটিগুলির জন্য আরএসআইএনসি-র প্রস্থান স্থিতি পরীক্ষা করার সুপারিশ করব, এর মতো কিছু RC=12; while [[ $RC -eq 12 || $RC -eq 30 ]](বা আপনি নেটওয়ার্ক ড্রপ থেকে যে কোনও প্রস্থান স্থিতি দেখতে পাচ্ছেন)।
গর্ডন ডেভিসন

1
যেহেতু আমি এটি (সম্পূর্ণ) অপ্রত্যাশিতভাবে চালাচ্ছি না, অসীম লুপগুলি এবং একমত হওয়া খুব একটা সমস্যা নয়, আপনাকে ধন্যবাদ।
ব্রুনো লোপস

2
এটি লজ্জাজনক আরএসসিএনটির মধ্যে এই বৈশিষ্ট্যটি অন্তর্নির্মিত নেই have
মাইকেল 21

11

আমি কিছুক্ষণ আগে এই একই সমস্যায় পড়েছিলাম। শেষ পর্যন্ত আমি ডেভিডের উত্তরের অনুরূপ কিছু লিখেছিলাম, তবে এটি সিক্রিটিএল-সি-তে প্রতিক্রিয়া জানিয়ে সর্বাধিক পুনরায় চেষ্টা করার সাথে কিছুটা উদ্বেগ জানালাম: http://blog.iangreenleaf.com/2009/03/rsync- এবং- retrying- যতক্ষণ না আমরা তা পেয়ে যাব html


1

sshpass সঙ্গে এটি একসাথে purtting

while ! sshpass -p 'xxxx' rsync --partial --append-verify --progress -a -e 'ssh -p 22' /source/ remoteuser@1.1.1.1:/dest/; do sleep 5;done
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.