অন্তর্বর্তী হোস্টের মাধ্যমে Rsync ফাইল


22

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

সংক্ষেপে আমি বি এর মাধ্যমে এ থেকে সিতে ডেটা প্রেরণ করতে চাই, যেখানে আমার ল্যাপটপ, বি আমার রাউটার এবং সি আমার সার্ভার।

আমি এই কমান্ডটি পেয়েছি A$ scp -oProxyCommand="ssh B nc %h %p" thefile C:destination:, এটি স্কিপ মাধ্যমে ফাইল স্থানান্তর করার জন্য সূক্ষ্মভাবে কাজ করে - তবে যেহেতু আমার সার্ভারে ইতিমধ্যে আমার বেশিরভাগ ডেটা রয়েছে আমি কেবল ডেল্টা সিঙ্ক করার জন্য আরএসসিএনসি ব্যবহার করতে চাই।

আমি চেষ্টা করেছি: A$ rsync file -e 'ssh B ssh' Cএবং এটি ব্যবহারকারীর জন্য পাসওয়ার্ড দেওয়ার অনুরোধ জানায়: সি। যাইহোক, আমি পাসওয়ার্ডটি প্রবেশ করার পরে কিছুই ঘটে না। রাউটারটি টমেটো ভি 1.28 চলছে এবং আমি সিএস ডাব্লু / ওএ পাসওয়ার্ডে লগ ইন করতে সক্ষম করার জন্য এসএসএস কনফিগারেশন ফাইলটি ব্যবহার করতে এটি সেট আপ করতে অক্ষম।

এই কাজটি করতে কীভাবে কোনও ধারণা?


2
ProxyCommandকনফিগারেশন ফাইল একই ব্যবহার করুন। Rsync এটি বাছাই করা উচিত।
জাকুজে

উত্তর:


30

এই প্রশ্নের মূলত উত্তর এখানে দেওয়া হয়েছে , এখানে স্কেপ-এর জন্য এবং আরএসসিএনসি-র জন্য এখানে । যেহেতু পরবর্তীকালে আমার উত্তর অন্তর্ভুক্ত রয়েছে তবে কোনও উত্তর গৃহীত হয়নি, আমি এখানে এটি পুনরাবৃত্তি করব।

যেমনটি আপনি উল্লেখ করেছেন, আপনি rsyncএর -e | --rshবিকল্পটি ব্যবহার করতে পারেন তবে এটি কিছুটা জটিল হতে চলেছে:

rsync -azv -e 'ssh -o "ProxyCommand ssh -A PROXYHOST -W %h:%p"' foo/ dest:./foo/

অথবা, যদি আপনার সংস্করণটি sshযথেষ্ট পরিমাণে নতুন (ওপেনএসএসএইচ> = ভি 7.3) হয় তবে আপনি -J( ProxyJump) বিকল্পটি ব্যবহার করতে পারেন

rsync -azv -e 'ssh -A -J USER@PROXYHOST:PORT' foo/ dest:./foo/

নোট যে আমি ব্যবহার করছি -A(এজেন্ট ফরোয়ার্ডিং) কিন্তু এটি আপনি কী ব্যবহার করা উচিত পাসওয়ার্ড প্রমাণীকরণের সাথে কাজ যদি না থাকে, এবং, অবশ্যই, আপনি প্রতিস্থাপন করতে পারেন proxyসঙ্গে Bএবং destসঙ্গে Cআপনার উদাহরণে।

যদি sshসুযোগক্রমে আপনার কাছে পর্যাপ্ত নতুন সংস্করণ না থাকে (> = 5.3, আইআইআরসি), আপনি বিকল্পগুলির netcatপরিবর্তে ব্যবহার করতে পারেন :-Wssh

rsync -azv -e 'ssh -o "ProxyCommand ssh -A PROXYHOST nc %h %p"' foo/ dest:./foo/

অবশেষে, ইতিমধ্যে মন্তব্যে উল্লিখিত হিসাবে, আপনি এটি ProxyCommandআপনার $HOME/.ssh/configফাইলটিতে রাখতে পারেন যাতে আপনার এত জটিল কমান্ড লাইন না থাকে। বিশেষতঃ এর মতো কিছু যুক্ত করুন:

Host C
  ProxyCommand ssh -A PROXYHOST -p 22 -W %h:%p

বা, ProxyJumpOpenSSH> = v 7.3 এর জন্য ব্যবহার করে :

Host C
  ProxyJump PROXYHOST

তারপরে আপনার ঠিক করা সম্ভব হবে:

rsync -azv foo/ C:./foo/
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.