Scp দিয়ে অনুলিপি করার সময় কীভাবে ওয়াইল্ডকার্ডস (*) ব্যবহার করবেন?


144

আমি যখন *পথের অক্ষরগুলি ব্যবহার করছি তখন কেন আমি স্কিপি দিয়ে অনুলিপি করতে পারি না ?

scp SERVERNAME:/DIR/* .

*পথে অনুমতি দেওয়ার জন্য এসসিপিটির কোন কনফিগারেশন প্রয়োজন ?

আপডেট: সমস্যাটি সার্ভারে নেই; pscp এসসিপিভি 1 ব্যবহার করার চেষ্টা করছে এবং এ কারণেই ত্রুটি বার্তা:

* নামে পরিচিত একটি ফাইল সম্পর্কিত scp কমান্ডলাইন এবং ত্রুটি বার্তা


এটি দেখুন, এটি আমার জন্য কাজ করেছে: https://superuser.com/a/1390405/445746
অমিতম

উত্তর:


126

দূরত্বের scpমেশিনটিকে গ্লোব *হিসাবে বিবেচনা করার জন্য এড়াতে আপনাকে আক্ষরিক পালাতে হবে (লক্ষ্য করুন যে এটি দ্বিগুণ উদ্ধৃত হয়েছে):

scp 'SERVERNAME:/DIR/\*' .

41
আপনার দুটি হয় না, তারার আগে উদ্ধৃতি বা একটি ব্যাকস্ল্যাশ দরকার। এবং scp একটিকে প্রসারিত করে না, শেলটি।
প্যাট্রিক

3
আপনি কি এটা চেষ্টা করেছেন? আমি ঠিক করেছি, আমি বর্ণিত হিসাবে ঠিক কাজ করে (উদ্ধৃতি দেওয়া এবং বেড়ানো ব্যর্থতার কারণ)। এমনকি ব্যবহারকারী 1274964 এমনকি তার উত্তরে আচরণের বিষয়টি নিশ্চিত করে। touch /tmp/abcd.1234; scp 'localhost:/tmp/abcd.\*' ./:scp: /tmp/abcd.*: No such file or directory
প্যাট্রিক

2
@ পেট্রিক প্রশ্নটি আক্ষরিক নক্ষত্র ব্যবহারের বিষয়ে , অর্থাত্, গ্লোব্বিং পুরোপুরি এড়ানো, দূরবর্তী অঞ্চলে কীভাবে গ্লোবব করবেন তা নয়।
ক্রিস ডাউন

2
প্রকৃতপক্ষে প্রশ্নটি pscpদূরবর্তী গ্লোববিংয়ের অনুমতি দেওয়ার জন্য ক্লায়েন্টের দিকে যাওয়ার বিষয়ে।
প্যাট্রিক

1
হ্যাঁ, আপনি যদি একক উদ্ধৃতি ব্যবহার করছেন তবে আপনাকে রক্ষা করতে হবে না
নেতৃত্বাধীন

52

আমি প্যাট্রিকের পরামর্শটি সঠিক বলে পেয়েছি, যদিও ক্রিসের উত্তর আমাকে সঠিক পথে পেয়েছে। উদ্ধৃতিগুলি ব্যবহার করুন এবং তারপরে তারার আগে আপনার ব্যাকস্ল্যাশ লাগবে না।

scp 'SERVERNAME:/tmp/file_num\*' .

scp: /tmp/file_num*.csv: এ জাতীয় কোনও ফাইল বা ডিরেক্টরি নেই

scp 'SERVERNAME:/tmp/file_num*' .

জাজমেন্টস_এফ_জব_171642.csv 100% 32KB 32.0KB / s 00:00
বিচারকাজ_ফর্মে_জম_172394.csv 100% 548KB 182.6KB / s 00:03


4
ঠিক আছে, কারণ এর অর্থ আপনি রিমোটে গ্লোবাল করতে চান । প্রশ্নটি কীভাবে কেবল রিমোটে গ্লোবাল করবেন তা নয়, রিমোটে কীভাবে স্তম্ভিত হওয়া বন্ধ করবেন (আক্ষরিক পেতে *)।
ক্রিস ডাউন

3
@ChrisDown। না। ব্যবহারকারী চায় যে ওয়াইল্ডকার্ডটি হোস্টের উপরে প্রসারিত হবে না এবং এটি রিমোটে এটি আরও একাধিক ফাইলের সাথে মিলে যাওয়ার জন্য এটি প্রসারিত করতে চায়। ফিরে আসা ফাইলগুলির মধ্যে কোনওটিরই আক্ষরিক '*' নেই। আপনি কি " হোস্টে গ্লোব্বিং বন্ধ " বলতে চাচ্ছেন ?
টিম বার্ড

1

দ্রষ্টব্য: নীচে প্রস্তাবিত প্রস্তাবটি পরীক্ষিত এবং সঠিকভাবে কাজ করার জন্য পরিচিত।

আপনি যে পথটি গ্লোব করছেন, তার কিছু অংশ যদি অ্যালিজ করে থাকেন তবে একক উদ্ধৃতিগুলি পরিবর্তনশীল প্রসারণ ভঙ্গ করবে।

এখানে একটি স্ক্রিপ্ট ব্যবহার করে এর ডবল globbed ফাইলের নাম ব্যবহার-কেস জন্য কোট কম্যান্ড-configure_ .tar.gz * একটি পাথ একটি পরিবর্তনশীল সঙ্গে ওরফে ব্যবহার করছে:

#!/bin/bash

USEREXECUTINGSCRIPT='admin'
SCRIPTSDIR="myscripts"

SCPUSER='terrencehoulahan'
SCPUSERPASSWD='Change-Me'
SCPHOST='1.2.3.4'
SCPDIRECTORYREMOTE='/Users/terrencehoulahan/Downloads/Ubuntu/18.04'

## Uncomment appropriate below command for your distro to install "sshpass"
#apt-get -y sshpass
#yum -y install sshpass

sshpass -p "$SCPUSERPASSWD" scp -o StrictHostKeyChecking=no $SCPUSER@$SCPHOST:"$SCPDIRECTORYREMOTE/command-configure_*.tar.gz" $(getent passwd|grep ^$(echo $USEREXECUTINGSCRIPT)|cut -d ':' -f6)/$SCRIPTSDIR/

সমাপ্ত ডাবল উক্তিটির পরে, স্থানীয় ডিরেক্টরি টার্গেটটি কেবলমাত্র / ইত্যাদি / পাসডাব্লুডি থেকে নির্দিষ্ট ব্যবহারকারীর বাড়ির ডিরটি বের করে তৈরি করা হয় ।

Scp কমান্ডটি নিজেই প্রবর্তিত sshpassএবং ব্যবহারকারীর মিথস্ক্রিয়া ছাড়াই কমান্ডটি -o StrictHostKeyChecking=noসম্পূর্ণরূপে স্বয়ংক্রিয়ভাবে চালিত হয় scp। শক্ত কোডিং পাথগুলির থেকে কালজয়ী তবে ভাল দেখায় যা সময়ে সময়ে পরিবর্তিত হবে বলে আশা করা যায়।

যাইহোক, ডাবল কোট ব্যবহার করে এমন একটি উদাহরণ যেখানে আপনি গ্লোব করছেন সেই পথে চলকগুলি প্রসারিত করার অনুমতি দেওয়া দরকার। আছে HTH

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