আমি কীভাবে এক কমান্ডে scp- র মাধ্যমে একাধিক ফাইল অনুলিপি করতে পারি?


20

আমাকে অনেকগুলি ফাইল এক পিসি থেকে অন্য পিসিতে (উভয় লিনাক্স) ট্রান্সপোর্ট করতে হবে। আমি এটির জন্য ব্যবহার করতে চাই scpতবে scpকেবল একবারে একটি ফাইল স্থানান্তর করার অনুমতি দিই ।

কিভাবে আমি এটি করতে পারব?

আমার আছে

  • আরএসসিএনসি বা অন্য কোনও প্রোটোকল ব্যবহার করার সম্ভাবনা নেই
  • পাসফ্রেজবিহীন শংসাপত্রগুলি ব্যবহার করার কোনও সম্ভাবনা নেই (তবে একটি পাসফ্রেজের সাথে শংসাপত্র রয়েছে)
  • স্থানান্তর করার জন্য ফাইলগুলির একটি তালিকা এবং অন্যান্য সার্ভারের ফাইলগুলির গন্তব্য পথের সাথে একটি তালিকা
  • ফাইলগুলি প্রচুর ডিরেক্টরিতে ছড়িয়ে পড়ে এবং আমি যে ডিরেক্টরিগুলি অনুলিপি করতে চাই তার সমস্ত ফাইল নয়

যদি সম্ভব হয় তবে আমি ব্যান্ডউইদথকে বাঁচাতে স্বচ্ছভাবে জিপ এবং ইউএনজিপ করতে চাই!

এটা কি সম্ভব?

উত্তর:


31

ব্যবহার tar:

tar cvzf - -T list_of_filenames | ssh hostname tar xzf -

2
ফাইলের ফর্ম্যাটটি এখানে: "সি মোডে, টার ফাইল নাম থেকে সংরক্ষণাগারভুক্ত করা নামগুলি পড়বে The বিশেষ নাম- -C'' on a line by itself will cause the current directory to be changed to the directory specified on the following line. Names are terminated by newlines unless --null is specified. Note that --null also disables the special handling of lines containing সি ''।"
কাউশা

14

আমি তার জন্য স্কিপ ব্যবহার করতে চাই, তবে এসসিপি কেবল একবারে একটি ফাইল স্থানান্তর করতে দেয়।

আমি নিশ্চিত যে এটি সত্য নয়, কমপক্ষে scpবেশিরভাগ লিনাক্স বিতরণের অন্তর্ভুক্ত ওপেনএসএসএইচ সরবরাহকারী কমান্ডের জন্য নয় ।

আমি scp file1 file2 ... fileN user@host:/destination/directory/প্রায়শই ঘন ঘন ব্যবহার করি ।

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


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

4

scp -r yourdir otherhost:/otherdirকাজ করে না ?

এটি চেষ্টা করুন:

tar cfz - . | ssh otherhost "cd /mydir; tar xvzf -"

zআলকাতরা থেকে -flag কম্প্রেশন আছে। অথবা আপনি ssh করতে -C ব্যবহার করতে পারেন:

tar cf - . | ssh -C otherhost "cd /mydir; tar xvf -"


1
সমস্যাটি হচ্ছে, আমার কাছে ফাইলগুলির একটি তালিকা রয়েছে। ফাইলগুলি প্রচুর ডিরেক্টরিতে ছড়িয়ে পড়ে এবং আমি যে ডিরেক্টরিগুলি অনুলিপি করতে চাই
সেগুলিতে

2
@ নাথান: -সি হ'ল এসএসএসকে সংক্ষেপণ করতে দেয়।
জিমি হেডম্যান

1

RHEL5- এ, এখানে কেবলমাত্র একমাত্র উপায় যা আমি জানি যে বিশেষ অক্ষর (কোনও স্থানের মতো) রয়েছে এমন ফাইলগুলির একটি তালিকা অনুলিপি করে সুরক্ষিত রাখতে পারি। একটি শেল স্ক্রিপ্ট তৈরি করুন এবং নিম্নলিখিতগুলি অন্তর্ভুক্ত করুন:

FILE="/path/filename"
while read line; do
scp "$line" username@servername:/destination/
done < $FILE

0

এটি ডাব্লু / ও অনেক ঝামেলা করা যায়।

আমি প্রতিটি ফাইলের পাশের হোস্টনামের সাথে কেবল ফাইলগুলির একটি তালিকা তৈরি করি এবং scp মনে হয় এটি সূক্ষ্মভাবে বিশ্লেষণ করে। অর্থাত।

srchost=`hostname`
myfiles="${srchost}:~/.bashrc ${srchost}:~/.bash_profile ${srchost}:~/.vimrc ${srchost}:~/.viminfo ${srchost}:~/.toprc ${srchost}:~/.dir_colors"
scp -v $myfiles $HOME

Scp এই সিনট্যাক্সের সাথে ঠিকঠাক কাজ করছে বলে মনে হচ্ছে। আমি যেমন প্রতিটি ফাইলের পাশের হোস্টনাম ছাড়াই চেষ্টা করেছি এটি প্রথম ফাইলের পরে ব্যর্থ হয়েছে। আমি এর আগে আমি এর জন্য ব্যবহৃত অন্য একটি বাক্যবিন্যাস মনে করলাম এবং এটি সনাক্ত করার পরে এটি পোস্ট করব।


এটি কাজ করে, তবে বেশ ধীর - এটি প্রতিটি ফাইলের জন্য একটি সংযোগ শুরু করে বলে মনে হচ্ছে ... (আমি এখানে স্লো কপিটির সমাধান খুঁজছিলাম ...) ~/বেশিরভাগ ক্ষেত্রেই বাদ দেওয়া যেতে পারে - এসসিপি হোম ডিরেক্টরি অনুসারে পরিচালনা করে। .. অন্য কোথাও থেকে যদি আপনার কাছে এর তালিকা থাকে $list: scp $(echo "$list"|sed "s/^/$srchost:/") local_destination(যদিও এটি ফাঁকা জায়গাগুলির সাথে ফাইলের নামগুলি ভেঙে যাবে)
গার্ট ভ্যান ডান বার্গ

-1

আমি অংশ হিসাবে আপনার ফাইল তালিকা থেকে একটি সংরক্ষণাগার তৈরি করতে এই জাতীয় কমান্ড ব্যবহার করার পরামর্শ দেব

tar -cvf allfiles.tar -L mylist.txt

তারপরে সংরক্ষণাগারটি ডাউনলোড করতে scp ব্যবহার করুন।

স্কিপ ব্যবহারকারী @ রিমোটহস্ট: ~ / allfiles.tar

/programming/8033857/tar-archiving-that-takes-input-from-a-list-of-files

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