Scp সর্বদা ওভাররাইট করুন বা ডিরেক্টরি তৈরি করুন


26

আমি অন্য একটি রিমোট সার্ভারে একটি দূরবর্তী সার্ভার থেকে নতুন ডিরেক্টরিতে (যেমন নাম পরিবর্তন করে) একটি ডিরেক্টরি অনুলিপি করতে scp ব্যবহার করছি:

scp -prq server1:dir1 server2:dir2

এটি জরিমানা করে যদি dir2 সার্ভার 2 তে উপস্থিত না থাকে, এটি dir2 নামে একটি নতুন ডিরেক্টরি তৈরি করে যা সার্ভার 1 এ dir1 থেকে সমস্ত কিছু অন্তর্ভুক্ত করে।

সমস্যাটি তখন আসে যখন সার্ভার 2-তে dir2 ইতিমধ্যে উপস্থিত রয়েছে (দ্রষ্টব্য: আমার আগে থেকে এটি জানার বা সার্ভার 2-তে dir2 মুছে ফেলার কোনও উপায় নেই) - কী ঘটে তা হল আমি dir2 নামক dir1 এর একটি অনুলিপি পাই।

আমি নিশ্চিত যে আমি মিস করছি এমন কিছু প্রাথমিক আছে তবে আমি এটিকে কার্যকর করে দেখছি না।

কোন সাহায্য অনেক প্রশংসা!

শুভেচ্ছা সহ,

জাইলস

ঠিক আছে, আমার কাছে 10 টিরও কম রেপ আছে এবং 8 ঘন্টা অপেক্ষা করতে আরড করতে পারি না তাই আমি যা পেয়েছি তা এখানে:

এখানে আমার জন্য কাজ করে এমন একটি স্ক্রিপ্ট রয়েছে:

#!/bin/sh
echo "method 1"
scp -prq server1:dir1/* server2:dir2/ >/dev/null  2>&1

if [ "$?" -ne "0" ]; then
        echo "failed ... trying method 2"
        scp -prq server1:dir1 server2:dir2
fi

exit

একটি একক কমান্ডে কীভাবে এটি করা সম্ভব হয় বা সম্ভব হলেও এখনও নিশ্চিত হন না।

চিয়ার্স @ মাইন্ডথেমোনি, কখনও কখনও কেবল নতুন দৃষ্টিভঙ্গি পাওয়া পথটি নির্দেশ করতে সহায়তা করে।


আপনার কাছে স্কেপ অ্যাক্সেস আছে তবে এসএসএস নয়?
ম্যাট

এটি সঠিক
গিলস

কেবলমাত্র সমস্যাটি হ'ল আপনি যে কোনও ব্যর্থতার উপর দ্বিতীয় অনুলিপিটি চেষ্টা করে দেখবেন, যা অগত্যা ডিআর 2 বিদ্যমান নেই। সম্ভবত আপনি যদি এমন পরীক্ষা দিয়ে আসতে পারেন যা কার্যত কিছুই করে না (বলুন একটি ফাঁকা দির কপি করুন)। তারপরে আউটপুটটির ভিত্তিতে হয় হয় scp1 বা scp2 চালান
ম্যাট

ভালো কথা, আমি এটিকে সামনে রেখে মনে রাখব এবং যদি আমি কিছু নিয়ে আসি তবে পুনরায় পোস্ট করুন।
গিলস

আপনি sftp করতে পারেন? তারপরে a এর আউটপুট পরীক্ষা করে দেখুন cd dir2
ম্যাট

উত্তর:


34

এই "ডট" সিনট্যাক্সটি ব্যবহার করুন:

scp -prq server1:dir1/. server2:dir2/

এটি ডিরেক্টরিটির পরিবর্তে ডিরেক্টরিটির বিষয়বস্তু অনুলিপি করে। এবং আমি বিশ্বাস করি এটি *গ্লোব্বিংয়ের চেয়ে বেশি বহনযোগ্য ।


2
-p ⇒ "আসল ফাইল থেকে পরিবর্তনের সময়, অ্যাক্সেসের সময় এবং মোডগুলি সংরক্ষণ করে" " -r ⇒ "পুনরুক্তি করে পুরো ডিরেক্টরিগুলি অনুলিপি করুন।" -কিউ ⇒ "অগ্রগতি মিটার অক্ষম করে।" সূত্র: Computerhope.com/unix/scp.htm
kr85

1
এটি আমাকে একটি ত্রুটি দেয়:scp: error: unexpected filename: .
অ্যান্ড্রু কোস্টার

1

সাধারণত ডিরেক্টরি তৈরি করতে নিয়ন্ত্রণ করতে আপনাকে /একটি পুরো পথ বোঝাতে ট্রেলিং ব্যবহার করতে হবে তবে আমার মনে হয় এটি যদি ডিরেক্টরিটি না উপস্থিত থাকে তবে এটি তৈরি করতে ব্যর্থ হবে:

scp -prq server1:dir1/* server2:dir2/

এটিও লুকিয়ে থাকতে পারে। * গ্লোব সম্প্রসারণের কারণে ফাইলগুলি (কিছু কৌশলযুক্ত শেল নির্দিষ্ট কাজ ছাড়াই )

আপনি sshএবং এর সাথে আলাদাভাবে যোগাযোগ করতে পারেন tar

ssh server1 "cd dir1 && tar -cf - ." | ssh server2 "( mkdir -p dir2; cd dir2 && tar -xf - )"

তবে এর অর্থ ট্র্যাফিক আপনার স্থানীয় মেশিন দিয়ে যায়।


scp -prq সার্ভার 1: dir1 / * সার্ভার 2: dir2 /
গিলস

@ গিলস আপনি কি বলছেন যে কাজ করে?
ম্যাট

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

1
গন্তব্য ডিরেক্টরি আমার জন্য উপস্থিত না থাকলে এটি 'ডিরেক্টরি একটি ডিরেক্টরি' ত্রুটি করে।
ম্যাট

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