আমার উপ-ডিরেক্টরিতে কোনও ফাইলকে এসএসএইচ এর মাধ্যমে একটি প্রত্যন্ত কম্পিউটারে সিপিতে ইউনিক্স আদেশগুলি ব্যবহার করা সম্ভব?


17

~/Downloadsআমার ব্যক্তিগত কম্পিউটারে আমার সাব ডাইরেক্টরিতে ডাউনলোড করা একটি সিরিজ সফ্টওয়্যার ফাইল রয়েছে । আমি ব্যাশ ব্যবহার করে কম্পিউটারের সাথে দূরবর্তীভাবে সংযোগ করতে ব্যবহার করছি ssh

sshদূরবর্তী কম্পিউটারের মাধ্যমে এই ফাইলটি স্থানান্তর করা সম্ভব ?


প্রশ্নটি একটি একক ফাইল ( this file) এবং একাধিক ফাইল ( a series of software files) বোঝায় , সেরা সমাধান আপনার একক ফাইল বা একাধিক ফাইল রয়েছে কিনা তার উপর নির্ভর করে।
ব্যবহারকারী 2768

উত্তর:


42

আপনি ব্যবহার করতে পারেন scp এই উদ্দেশ্যে । এটি এসএসএইচ প্রোটোকল ব্যবহার করে ফাইল স্থানান্তর করার একটি নিরাপদ উপায়।

উদাহরণস্বরূপ, রিমোট কম্পিউটার yourfile.txtথেকে নামক কোনও ফাইল অনুলিপি ~/Downloadsকরতে, ব্যবহার করুন:

scp ~/Downloads/yourfile.txt your_username@remotehost.edu:/some/remote/directory

আপনি এখানে আরও উদাহরণ দেখতে পারেন ।


5
আমার মনে হয় rsyncএখন কাজ করতে পারে, এখন যে আমি এটি সম্পর্কে চিন্তা করি
শানজেংইয়াং

1
কেবল এক বা এক হাতে পূর্ণ ফাইলের জন্য
আরএসসিএনসি

14
@ পেবেবেলস বিপরীতে, scpউপরে প্রতিস্থাপন rsyncএবং এটি ঠিক কাজ করা উচিত।
বিট্রি

আমি rsyncসমস্ত কিছুর জন্য, এমনকি একক ফাইলের জন্যও ব্যবহার করি , কারণ এটি সাধারণ ক্ষেত্রে "কেবলমাত্র কাজ করে" এবং অন্যান্য ক্ষেত্রে এটি আরও বেশি দক্ষ হতে পারে। যদি ইতিমধ্যে সংকুচিত এবং / অথবা এনক্রিপ্ট করা না হয় scpবা rsyncএমন কোনও কিছু ব্যবহার করে , তবে সংক্ষেপণ বিকল্পটি চালু করতে ভুলবেন না (এর -Cজন্য scp,-z বা --compressজন্য rsync)। আসলে আমি এটি অভ্যাস অনুসারে চালু করি - এটি খুব বিরল আপনি এমন একটি পরিস্থিতি খুঁজে পাবেন যেখানে এটি কখনও জিনিসকে ধীর করে দেয় (সম্ভবত আপনি যদি আরপিআই এর মতো সীমাবদ্ধ সিপিআই পাওয়ার সহ ধীর নিম্ন-পাওয়ার ডিভাইস ব্যবহার করছেন)।
ডেভিড স্পিলিট

37

যদিও scpএটির জন্য স্পষ্টতই সঠিক সরঞ্জাম, যদি কোনও কারণে আপনি এটি ব্যবহার না করতে পারেন তবে আপনার স্থানীয় মেশিন থেকে অনুলিপি মেশিনে ডিরেক্টরি কাঠামোটি অনুলিপি করতে, নীচের মতো কিছু করতে পারেন:

tar -c . | ssh <remote> tar -x

এই হবে tarস্থানীয় মেশিনে বর্তমান ডিরেক্টরী এবং লেখার যে tarকরতে stdoutযা পরে একটি জন্য বাঁশি বাজালাম করা হবে sshকমান্ড যেখানে এটি দূরবর্তী কমান্ড চালানো হবে ফাইল তা থেকে সার্চ untar করতেstdin

-f -উভয়ই সৃষ্টি এবং নিষ্কাশন সমাপ্তির ডিফল্ট হওয়া সম্পর্কে ডায়রিচ এপ্পের মন্তব্য প্রতিফলিত করার জন্য সম্পাদিত , সুতরাং স্পষ্টভাবে নির্দিষ্ট করার প্রয়োজন নেই।


7
আপনি যদি এটি করছেন তবে আপনার হোম ডিরেক্টরি বাদে অন্য কোথাও বের -C basedirকরার tarজন্য আপনি সম্ভবত যুক্তি যুক্ত করতে চাইবেন ।
ডগল

17

আপনি যদি বিরল অনুষ্ঠানের চেয়ে আরও বেশি কিছু করতে চান তবে আমি এটির সাথে দূরবর্তী ফাইল সিস্টেমটি মাউন্ট করার পরামর্শ দেব sshfs যদি ইউনিক্স-এর মতো FUSE সমর্থন করে (লিনাক্স, * বিএসডি, ম্যাক ওএস এক্স) ব্যবহার করে তবে । Home / রিমোট-সার্ভার নামে পরিচিত বলে আপনার হোম ডিরেক্টরিতে একটি ডিরেক্টরি তৈরি করুন:

    $ mkdir ~/remote-server

তারপরে রিমোট ফাইল সিস্টেমটি মাউন্ট করুন sshfs । আপনার রিমোট মেশিনের হোস্টের নাম এবং "রিমোট ডিরেক্টরিের নাম" এর সাহায্যে আপনি দূরবর্তী সিস্টেমে যে ডিরেক্টরিটি ব্যবহার করছেন তা দিয়ে "thyerver.com" প্রতিস্থাপন করুন।

    $ sudo sshfs username@yourserver.com:/name/of/remote/directory ~/remote-server/

এটি হয়ে গেলে, রিমোট ডিরেক্টরিটি আপনার ফাইল সিস্টেমের অংশ এবং আপনি এটি সহ আপনার সমস্ত সাধারণ সরঞ্জাম ব্যবহার করতে পারেন cp :

    $ cp ~/Downloads/your-files ~/remote-server

আপনি যদি ইতিমধ্যে sshfsইনস্টল না করে থাকেন তবে আপনার প্যাকেজ পরিচালক ব্যবহার করে আপনার কম্পিউটারে এটি ইনস্টল করতে সক্ষম হবেন (নামযুক্ত প্যাকেজগুলি সন্ধান করুনsshfs বাfuse-sshfs । আরও তথ্যের জন্য, আপনি একটি টিউটোরিয়াল অনলাইনে পড়তে পারেন ।

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


এবং তারপরে কোন sshfs বিকল্পগুলি আপনাকে আপনার কাজটি সেরা করে তুলতে সহায়তা করবে তা পরীক্ষা করে দেখুন। উদাহরণস্বরূপ ব্যবহারকারী / গোষ্ঠী আইডি ম্যাপিং দিয়ে শুরু করা -o idmap={none,user,file},gid=<remote_user_group_ID>,allow_otherএবং -Cকম ব্যান্ডউইথ যদি সংক্ষেপণের জন্য। যত তাড়াতাড়ি এটি ভাল কাজ করে, আমি ব্যক্তিগতভাবে কমান্ডগুলির জন্য ssh এর মাধ্যমে দূরবর্তী ফাইল সিস্টেমগুলি মাউন্ট করার জন্য ব্যক্তিগত নামগুলি যুক্ত করি। @ বেনজামিন_সাতন আমি এখানে সুডো বা মূল ব্যবহার করব না, কমপক্ষে কোনও সঠিক ব্যবহারকারী / গোষ্ঠী ম্যাপিং ছাড়াই নয়।
tuk0z

9

প্রথমবার, scp(অনুলিপি করা ssh) এবং এর মধ্যে কোনও আসল পার্থক্য নেই rsync

পরবর্তী রানগুলি ইতিমধ্যে বিদ্যমান ফাইলগুলি অনুলিপি না করে rsync দ্বারা উপকৃত হবে।

rsync -avH ~/Downloads  username@remotehost:Downloads
  • -a সমস্ত ফাইলের জন্য
  • -v ভার্জোজ জন্য
  • -H "সিমলিঙ্কগুলি সন্ধান করুন এবং সঠিক কাজটি করুন"
  • তারপরে উত্স এবং গন্তব্য পাথ। আপনি উত্সটিতে ওয়াইল্ডকার্ডগুলি ব্যবহার করতে পারেন, বা কেবল পুরো ডিরেক্টরিটি সিঙ্ক করতে পারেন।

অন্যান্য দরকারী পতাকা অন্তর্ভুক্ত:

  • --delete গন্তব্যস্থলে ফাইলগুলি মুছতে যে উত্সটিতে আর নেই।
  • --dry-run পরীক্ষার জন্য - একত্রিত হলে খুব সহজ --delete

এটি sshপাসওয়ার্ডহীন লগইন করতে কীগুলি ব্যবহার করবে , যদি আপনি সেগুলি সেট আপ করেন।

রান শেষে, rsyncআপনাকে বলবে যে আপনি পুনরায় প্লেইন কপিটি করা থেকে কত গুণ বেশি দ্রুত ছিল faster


1
-Hপ্রকৃতপক্ষে হার্ড লিঙ্কগুলির জন্য, উত্স ডিরেক্টরি কাঠামোর একাধিক স্থানে লিঙ্ক করা হলে একই সামগ্রীটি দু'বার বা তার বেশি প্রেরণ করা বন্ধ করে দেয় (তবে বৃহত্তর ডিরেক্টরি কাঠামোর জন্য প্রক্রিয়াটি কম দক্ষ করতে পারে)। এটি প্রতীকী লিঙ্কগুলিতে কোনও প্রভাব ফেলবে না, তবে -a/ দ্বারা অন্তর্ভুক্ত কয়েকটি বিকল্পগুলি --archiveকীভাবে সিমলিংকগুলি প্রক্রিয়াভুক্ত করবে তা প্রভাবিত করে।
ডেভিড স্পিলিট

4

উপরের উত্তর যুক্ত করতে। কখনও কখনও আমি দূরবর্তী পথ সম্পর্কে ঠিক নিশ্চিত নই। এই ক্ষেত্রে আমি ব্যবহারsftp প্রথমে প্রয়োজনীয় স্থানে নেভিগেট করতে , তারপরে একটি ফাইল ডাউনলোড বা আপলোড করার জন্য get বা put ব্যবহার করুন।

আপনি যদি কিছু কিছু সর্বদা সিঙ্ক করে রাখতে এবং স্থানীয়ভাবে দূরবর্তী মেশিনে অবস্থিত এমন কোনও ফাইল কার্যকর করতে চান তবে sshfsদুর্দান্ত কাজ করে।


-1

আমি ssh এর সাথে খুব অনুরূপ কিছু করছি। আমি ভিজ্যুয়াল স্টুডিওর জন্য একটি কাস্টম বিল্ড টুল তৈরি করেছি এবং মূলত ভিএস একটি এসএসএস কমান্ড চালাচ্ছি যা আমার কোডটি একটি লক্ষ্য কম্পিউটারে অনুলিপি করে এবং তারপরে সেই টার্গেট কম্পিউটারে সংকলন করে।

ssh ইউজারবি @ হোস্টবি'সিপি / নেটওয়ার্ক /প্যাথ / অফসোর্স / ফাইলে.েক্সট /প্যাথ / অফ / ফিনাল / ফাইল.ইেক্সট; ./runCustomCommand '

একক উদ্ধৃতি চিহ্ন এবং আধা-কোলনের ব্যবহার লক্ষ্য করুন। প্রাক্তন আপনার কমান্ডগুলি ssh এর মাধ্যমে হোস্টবিতে আবদ্ধ করে এবং পরেরটি আপনাকে হোস্টএ থেকে এক ssh কমান্ডে একাধিক হোস্টবি সিস্টেম কমান্ড চালাতে দেয়।

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


যে কেউ ডাউনটিভেট করেছে তারা কীভাবে ডাউনটিভোট করেছে সে সম্পর্কে একটি মন্তব্য দিতে পারেন? ডাউন ভোট তথ্যমূলক প্রতিক্রিয়া ব্যতীত অর্থহীন han ধন্যবাদ। আমি ওপির নির্দিষ্ট প্রশ্নটির সাথে সরাসরি উত্তর সম্পর্কিত উত্তর দিয়ে সম্বোধন করেছি। আমি নতুন প্রযুক্তি প্রবর্তন করছি না বা বিকল্প রুটের পরামর্শ দিচ্ছি না। কেন? হয়তো ওপি বিকল্প রুট ব্যবহার করতে চায় না।
অ্যান্ড্রু
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.