rsync সংযোগ বিচ্ছিন্ন করে: ভাঙা পাইপ


14

আমি rsyncআমার হোম ডিরেক্টরিটি ব্যাকআপ করতে ব্যবহার করছি । এটি দীর্ঘদিন ধরে ঠিকঠাক কাজ করে চলেছে। আমি যে কমান্ডটি ব্যবহার করছি তা এখানে:

rsync \
    -pavz \
    --delete \
    --exclude 'mnt/' \
    --exclude '.cache/' \
    --exclude 'Videos/' \
    --exclude 'Music/' \
    --exclude 'Documents/virtualbox' \
    /home/"${USER}" "${server}":"${dir}" 2>> "${errorFile}"

যাইহোক, আমি যে সার্ভারটিতে ব্যাক আপ করছি সেটি স্যুইচ করেছি এবং এখন rsyncশুরু হয়ে কয়েক সেকেন্ডের জন্য (কয়েক মিনিট পর্যন্ত) চালিত হয় তবে ত্রুটি বার্তায় থামে

packet_write_wait: Connection to x.x.x.x: Broken pipe
rsync: [sender] write error: Broken pipe (32)
rsync error: unexplained error (code 255) at io.c(820) [sender=3.1.1]

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

আমি kerberosরিমোট সার্ভারে প্রমাণীকরণ করতে ব্যবহার করি ।

আমি বিভিন্ন সমন্বয় চেষ্টা ServerAliveInterval, ServerAliveCountMaxবা ClientAliveIntervalআমার মধ্যে ~/.ssh/config, কিন্তু কোন উপকার।

এটি হতে পারে যে সার্ভারে এমন কোনও কিছু চলছে যা rsyncকোনও কারণে কমান্ডটি হত্যা করে , তবে কীভাবে এটি তদন্ত করতে হয় তা আমি জানি না। কোন ধারনা?


হয়তো আমার যুক্ত করা উচিত যা আমি kerberosরিমোট সার্ভারে প্রমাণীকরণ করতে ব্যবহার করি ।
pfnuesel

এটি সম্ভাব্য খুব গুরুত্বপূর্ণ। এই তথ্য অন্তর্ভুক্ত করতে দয়া করে আপনার প্রশ্নটি সম্পাদনা করুন
রোয়াইমা

এই সার্ভারে, rsync এ কলটি প্রতিবার একবারে ব্যর্থ হয়, বা কেবল কখনও কখনও? এছাড়াও, যদি বারবার ব্যর্থ হতে সময় পরিমাপ করে তবে কোনও নিদর্শন উপস্থিত হয়? আমি কার্বেরোস প্রমাণীকরণের সময় নির্ধারণের সময়, বা অনুরূপ কিছু সম্পর্কে ভাবছি।
ধাগ

কোনও আইও ত্রুটি দেখে আমার অবাক হয়ে যায় যে দূরবর্তী দিকের ফাইল সিস্টেমটি ভরাট হয়েছে কিনা?
জেফ স্ক্যালার হলেন

1
টুইটারে এটি সমস্যা ছাড়াই কাজ করে বলে মনে হচ্ছে।
pfnuesel

উত্তর:


6

আপনার সমস্যা স্মৃতি (অভাব) হতে পারে। ফিরে যখন 1 জিবি সার্ভারের জন্য বড় ছিল, বড় ডেটাসেটের জন্য আরএসআইএনসি আমার উপর ব্যর্থ হবে। সম্ভবত অ্যালগরিদম মেমরির সক্ষমতা বৃদ্ধি পেয়েছে তবে আমি 8 বছর বা তার পরেও এই সমস্যাটি দেখিনি। সুতরাং সত্যিই, এটি বাইরের শট, তবে এটি মূল্যবান worth প্রথমে আরও ছোট ডেটাসেট ব্যবহার করে দেখুন। আপনি চেষ্টাও করতে পারেন - স্যানিটি চেকের ফর্ম হিসাবে - একটি ট্যারি-টার্ট করছেন:

tar cf - $HOME | ssh ${server} tar xf -

যে এমন এছাড়াও কয়েক মিনিট পরে ব্যর্থ হয়, এটি মেমরি নয়।


4

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

screen -LS rsync
[execute your rsync command]
Ctrl-A+D to detach from the session

আপনি চালিয়ে স্ট্যাটাসটি যাচাই করতে পারেন screen -x rsync(বা আপনি যদি নামটি দিয়ে থাকেন তবে সেশনটির নামকরণের সিদ্ধান্ত নেওয়ার জন্য যা কিছু প্রয়োজন তা নয়)। এটি আপনার বর্তমান শেলটি সেই সেশনে পুনরায় সংযুক্ত করবে। আপনি স্থিতিটি যাচাই করার পরে আবার এটি থেকে আলাদা হওয়া মনে রাখবেন যাতে এটি পটভূমিতে চলতে থাকে।

আপনি কোনও screenব্যর্থতার মধ্যে ব্যাকগ্রাউন্ডে চলার জন্য কমান্ডটি কার্যকর করতে পারেন [কেউ যদি আমার ভুল হয় তবে আমাকে সংশোধন করুন] screen -dm 'command'। আপনি man screenশেষটি চেষ্টা করার আগে চাইবেন ।

সম্পাদনা করুন:

আমি আমার উত্তরটি সম্পাদনা করছি কারণ আপনি নিশ্চিত করেছেন যে এই screenদৃশ্যে কোনও সহায়তা দেয় না, তবে আপনি আমার মন্তব্যে জবাব দিয়েছিলেন যে আপনি scpকী ধরণের ফলাফল পাচ্ছেন তা দেখার এবং দেখার জন্য পরামর্শ দিয়েছিলেন, যার প্রতিক্রিয়া আপনি অদ্ভূতভাবে যথেষ্ট বলেছিলেন, এটি ঠিক কাজ করেছে।

: তাই আমার নতুন উত্তর এই হল ব্যবহার scp- অথবা ssh(সঙ্গে tar) - পরিবর্তেrsync

মঞ্জুর, scpযেমন বৈশিষ্ট্য সুবিশাল সংখ্যা সমর্থন করে না rsync, কিন্তু আপনি আসলে ঠিক কত বৈশিষ্ট্য আবিষ্কার করতে এটি অবাক হবো না সমর্থন করে প্রায় হয় অভিন্ন যে rsync

এর জন্য বাস্তব বিশ্বের পরিস্থিতি scpএবং এর অন্যান্য বিকল্প rsync:

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

বলা হচ্ছে, আমি সম্প্রতি স্ক্রিপ্টটি সংশোধন করেছি যাতে এটি ব্যবহার করা সমস্ত হ'ল sshএবং tar- GNU tar/ gtar, যথার্থ হয়। গনুহ tarঅপশনের অনেক আসলে আপনি পাবেন সমর্থন rsyncযেমন --include, --excludeঅনুমতি / অ্যাট্রিবিউট সংরক্ষণ, কম্প্রেশন, ইত্যাদি

আমি এখন যেভাবে এটি সম্পাদন করছি তা হ'ল sshরিমোট সার্ভারে (পাবকি আথের মাধ্যমে) এবং ব্যবহার করে gtar -czf - [other options such as --include='*.log' and --exclude='*core*', etc.]- এটি সমস্ত তথ্য লিখে দেয় stdout, যা পরে [স্থানীয়ভাবে] পাইপ করা হয় tar -xzfযাতে রিমোট প্রোডাকশন সার্ভারে কোনও পরিবর্তন না ঘটে are , এবং টানা সমস্ত ফাইল স্থানীয় সার্ভারে রয়েছে। এটি rsyncএই ক্ষেত্রে একটি দুর্দান্ত বিকল্প । একমাত্র গুরুত্বপূর্ণ বিষয় tarবা scpসমর্থন না হ'ল ইনক্রিমেন্টাল ব্যাকআপ এবং সেই rsyncবৈশিষ্ট্যগুলি পরীক্ষা করে ব্লক-স্তরের ত্রুটির স্তর ।

আমি সম্পূর্ণ কমান্ডটি ব্যবহার করার সময় উল্লেখ করছি sshএবং tarএটি এমন কিছু হবে (রিমোটটি সোলারিস 10; স্থানীয় হ'ল দেবিয়ান, যার মূল্য রয়েছে):

cd /var/www/remotelogs
ssh -C user@remotehost "cd /path/to/remote/app.directories; gtar -czf - --include='*.log' --exclude='*.pid' --exlude='*core*' *" | tar -xz

আপনার দৃশ্যে এটি বিপরীত হবে - tar -cf -স্থানীয়ভাবে, এবং মাধ্যমে রিমোট সার্ভারের পাইপ ssh user@remotehost "tar -xf -"- এর আরও একটি উত্তর রয়েছে যা এই ধরণের আচরণের উল্লেখ করে তবে তত বেশি বিশদে যায় না।

জিনিসগুলি গতি বাড়ানোর জন্য আমি আরও কয়েকটি অপশন যুক্ত করেছি। মৃত্যুদন্ড কার্যকর করার সময়টি যতটা সম্ভব কম পেতে আমি নিরলসভাবে সবকিছুকে সময় দিয়েছি। আপনি মনে করেন যে সাথে সংক্ষেপণ ব্যবহার করেtar অর্থহীন হবে, তবে এটি আসলে কিছুটা গতি বাড়িয়ে তোলে, ঠিক তেমনভাবে সংক্ষেপণ সক্ষম করতে -Cপতাকা ব্যবহার করে । আমি যে পোস্টটি ব্যবহার করি (যেটি আমি পোস্ট করেছি তার সাথে খুব মিল) আমি এই পোস্টটি পরবর্তী সময়ে আপডেট করতে পারি তবে এই সপ্তাহে অবকাশে থাকায় এই মুহুর্তে ভিপিএন-তে উঠতে আমার মনে হয় না।sshssh

সোলারিস 10 এ, আমি এটিও ব্যবহার করি -c blowfish, কারণ এটি দ্রুততম সিফারটি দিয়ে প্রমাণীকরণ করা এবং জিনিসগুলিকে বাচ্চার গতি বাড়িয়ে তুলতে সহায়তা করে তবে আমাদের সোলারিস 11 হয় এটি সমর্থন করে না বা এই সাইফার স্যুটটি অক্ষম করেছে।

তদ্ব্যতীত, আপনি যদি ssh/ tarবিকল্পের সাথে যেতে বেছে নেন তবে আমার ব্যবহারের মূল সমাধানটি বাস্তবায়িত করার পক্ষে এটি আসলে একটি ভাল ধারণাscreen ব্যাকআপের জন্য কিছুটা সময় নিতে চান তবে । যদি তা না হয় তবে নিশ্চিত হয়ে নিন যে আপনার ক্যাপালাইভ / টাইমআউট সেটিংস আপনার ssh_configঠিক ঠিক টুইট করেছে, বা এই পদ্ধতিটি খুব সম্ভবত ভাঙা পাইপের কারণ হতে পারে।

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

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


1
আমি এটি দিয়ে চেষ্টা করেছিলাম screen, ফলাফল একই।
pfnuesel

@pfnuesel - কমপক্ষে এটি জেনে রাখা ভাল যে আপনি এটিকে বাতিল করতে পারেন।
রুবিনোরেল

3

ওএসএক্স এল ক্যাপিটেনে আমার একই সমস্যা ছিল এবং আরএসসিএন ভি ৩.১১ এ আপগ্রেড করে এটি ঠিক করেছিলাম। সমস্যাটি আমার জন্য v2.6.9 এ ঘটছিল।


আমি দৌড়াচ্ছি rsync 3.1.1
pfnuesel

আপনার রাউটারে প্যাকেট বন্যার সুরক্ষা (বা কোনও অনুরূপ সুরক্ষা) সক্ষম নেই তা পরীক্ষা করতে পারেন। আপনি কি কোনও ধরণের ভিপিএন দিয়ে সংযোগ করছেন?
ব্রুনো

সমস্যা হতে পারে। দুর্ভাগ্যক্রমে, আমার নেটওয়ার্ক ডিভাইসগুলিতে অ্যাক্সেস নেই। এটি অন্যান্য সার্ভারগুলিতে সূক্ষ্মভাবে কাজ করে, তাই আমি অনুমান করছি যে এই নির্দিষ্ট সার্ভারটিতে কিছুটা প্যাকেট বন্যার সুরক্ষা রয়েছে।
pfnuesel

2

কার্বেরোস কেবলমাত্র প্রমাণীকরণের জন্য, এটি আপনার একটি সফল সংযোগ তৈরির পরে কোনও সমস্যার কারণ হবে না।

আপনি কি আর আর সিএনসি ডেমন ব্যবহার করার চেষ্টা করেছেন?

আপনার সার্ভারগুলি কি একই নেটওয়ার্কে রয়েছে বা আপনার মধ্যে ফায়ারওয়াল / রাউটার রয়েছে?

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

প্রথম সার্ভারে:

nc -lk <port-number>

এবং ক্লায়েন্ট উপর

nc <server> <port-number>

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


দুর্ভাগ্যক্রমে, সার্ভারে আমার রুট অ্যাক্সেস নেই। এর অর্থ আমি আরএসসিএনএন ডেমন বা নেটকাট সেশন চালাতে পারি না।
pfnuesel

@pfnusel আপনি যে netcatকোনও বন্দরে চালাতে পারবেন > 1024 রুট সুবিধার দরকার ছাড়াই
রোয়াইমা

1

আপনার কাছে রিমোট সার্ভারে এমন কিছু আছে যা স্টডআউটকে লেখেন । এটি আপনার .profileবা হতে পারে .bash_profile। এটির মতো কম sttyবা স্পষ্ট কিছু হতে পারে mesg। যদি সন্দেহ হয়, আপনার সার্ভারে লগ ইন করা আপনার প্রশ্নের একটি প্রতিলিপি অনুলিপি করুন (সমস্ত উপায়ে হোস্টনামটি আবার যোগাযোগ করুন)।


আমি বুঝতে পারছি না। স্ট্যান্ডআউটে কী লিখছে তা খুঁজে বের করার জন্য বা ত্রুটি হচ্ছে না বা আমার কী করা উচিত তাও নয়।
pfnuesel

@pfnuesel আপনি লগইন করে আপনার ট্রান্সক্রিপ্টটি অনুলিপি করে এখানে পোস্ট করেন, কেউ কি হতে পারে তা দেখতে পাবে। আরও ভাল, আপনার .profileবা .bash_profileপর্যালোচনার জন্য পোস্ট করুন । আপনি ভালো জিনিস খুঁজছেন mesgবাstty
roaima

আমার কোনও ডটফাইলে নেই mesgবা নেই stty
pfnuesel

@pfnuesel লগইন চলাকালীন টার্মিনালে লিখিত অন্য কিছু?
রোয়াইমা

না, তবে আমি স্টডআউটে লেখার মতো কিছু যুক্ত করলেও। এটি কিছুই পরিবর্তন করে না।
pfnuesel

1

একবারে আরএসসিএনসি-র সাথে আমার যেমন সমস্যা হয়েছে, আমি এটি অন্য একটি মেশিনের একটি অতিরিক্ত ইথারনেট পোর্টে ট্র্যাক করেছিলাম যা আমার টার্গেট সার্ভারের মতো একই আইপি ঠিকানা ছিল। আরএসসিএনসি যদি তীব্র হয় তবে এটি অবশ্যই নেটওয়ার্ক নির্ভরযোগ্যতা বা (আমার ক্ষেত্রে) কনফিগারেশন সমস্যা।


1

যখন চলমান আমারো একই সমস্যা সম্মুখীন rsyncঅথবা নিজে (হয় সঙ্গে cp, scpঅথবা GNOME নটিলাস মধ্যে) ভিত্তিক লিনাক্স ন্যাস একটি গিগাবিট তারবার্তা পাঠান নেটওয়ার্কের মাধ্যমে (কোন একটি কম চালিত এআরএম করার জন্য একটি লিনাক্স ডেস্কটপ থেকে বড় ফাইল কপি kerberosআমার সেটআপ)। এনএএস ড্রাইভগুলি ব্যবহার করে ভাগ sambaকরা হয় এবং ক্লায়েন্ট ব্যবহার করে মাউন্ট করা হয় cifs। আমার সমাধানটি হ'ল কোনও ক্যাশ ছাড়াই ক্লায়েন্টের কাছ থেকে এনএএস ফাইল সিস্টেম মাউন্ট করা (এছাড়াও মাউন্ট.সিফস ম্যান পেজগুলি দেখুন):

sudo mount -t cifs //server.lan/somedir /mnt/somedir/ -o cache=none

অন্যথা, যখন ক্লায়েন্ট ব্যবহার উপর ন্যাস ড্রাইভ মাউন্ট gvfsমধ্যে nautilusএই সমস্যা জিদ না যখন বড় ফাইল কপি (কিন্তু যে সঙ্গে একযোগে কাজ করে না rsyncযদিও)।

স্থানীয় ডিস্কের সাথে একই সাথে লিনাক্সকে ফাইল ফাইল সিস্টেমে লেখার জন্য আরও জটিলভাবে পড়তে হবে কেন এই সমস্যাটি হতে চলেছে সে সম্পর্কে আরও বিস্তারিতভাবে পড়ুন।


0

প্রেরণ এবং প্রাপ্তি পিসি উভয়ই ঠিক একইরূপে আপনার আরএসসিএন সংস্করণগুলি আপগ্রেড করুন । আমার উত্তরটি এখানে দেখুন: /server/883487/unable-to-rsync-due-to-broken-pipe/988794#988794


1
ডাউনটা কেন? এটি একটি মন্তব্য নয় উত্তর হতে পারে? যে কেউ? যে কেউ?
গ্যাব্রিয়েল স্ট্যাপলস

1
আমি আর সমস্যাটি পুনরুত্পাদন করতে পারি না, যেহেতু সেই সার্ভারটিতে আমার আর অ্যাক্সেস নেই। তবে এটি একটি যুক্তিসঙ্গত উত্তর এবং ডাউনভোটের প্রাপ্য নয়।
pfnuesel
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.