প্রশ্ন Scp কপি ডিরেক্টরি recursively করতে পারেন?


বর্তমানে আমি শুধুমাত্র একটি একক কপি করতে পারেন .tar ফাইল। কিন্তু কিভাবে আমি সঙ্গে recursively ডিরেক্টরি কপি করতে পারেন scp?


520
2018-04-29 04:24


উত্স




উত্তর:


হ্যাঁ, ব্যবহার করুন -r:

scp -rp sourcedirectory user@dest:/path
  • -আর মানে recursive
  • -পি মূল ফাইল থেকে পরিবর্তন সময়, অ্যাক্সেস সময়, এবং মোড সংরক্ষণ।

নোট: এটি তৈরি করে sourcedirectory ভিতরে /path এইভাবে ফাইল হবে /path/sourcedirectory


841
2018-04-29 04:28



তবে মনে রাখবেন যে এটি symlinks সংরক্ষণ করবে না। - CpnCrunch
মনে রাখবেন যে -pr (বিপরীত আদেশে বিকল্পগুলি) ফোল্ডারগুলি অনুলিপি করবে না, বরং লক্ষ্যবস্তু ডিরেক্টরিতে তাদের সামগ্রীটি বুর করবে (দৃশ্যত, বিকল্প বিষয়গুলির ক্রম)। - pms
কিছু কারণে /path আপেক্ষিক বলে মনে হচ্ছে userগুলি $HOME - কিভাবে আমি এটা ছাড়া পরম করা root@? - Jonathan
হ্যাঁ, এসসিপি এমন ফাইল রাখে যেখানে আমি চাই। প্রায়ই যখন একটি ডিরেক্টরি প্রতিস্থাপন করার চেষ্টা করা হয়, আমি পরিবর্তে একই নামের সাথে এটির মধ্যে অন্য কোন ডিরেক্টরি দিয়ে শেষ করি। আমি এই সঙ্গে অতিরিক্ত সতর্কতা অবলম্বন করছি। - sudo


পূর্ববর্তী উত্তর টেকনিক্যালি সঠিক যখন, আপনি ব্যবহার বিবেচনা করা উচিত rsync পরিবর্তে. rsync একটি diff প্রক্রিয়া সঙ্গে প্রেরণ এবং গ্রহণ পক্ষের তথ্য তুলনা তাই এটি পূর্বে প্রেরিত হয়েছে যে তথ্য পুনরায় পাঠাতে হবে না।

আপনি যদি একাধিকবার রিমোট মেশিনে অনুলিপি করতে যাচ্ছেন তবে ব্যবহার করুন rsync। আসলে, এটি ব্যবহার করা ভাল rsync প্রতিবার ফাইল অনুমতি এবং মালিকানা অনুলিপি এবং নির্দিষ্ট ফাইল বা ডিরেক্টরিগুলি বাদ দেওয়ার মতো এটির জন্য আরও নিয়ন্ত্রণ রয়েছে। সাধারণভাবে:

$ rsync -av /local/dir/ server:/remote/dir/

একটি দূরবর্তী ডিরেক্টরি সঙ্গে একটি স্থানীয় ডিরেক্টরি সিঙ্ক্রোনাইজ হবে। যদি আপনি এটি দ্বিতীয়বার চালান এবং স্থানীয় ডিরেক্টরি বিষয়বস্তুর পরিবর্তন না ঘটে তবে কোনও তথ্য স্থানান্তরিত হবে না - চালানোর চেয়ে আরও কার্যকর scp এবং প্রতি সময় প্রতিলিপি।

এছাড়াও, rsync আপনি বিপরীত, খুব সহজেই বিরতি স্থানান্তর থেকে পুনরুদ্ধার করতে পারবেন scp

অবশেষে, আধুনিক সংস্করণ rsync ডিফল্ট চালান ssh, তাই যদি scp ইতিমধ্যে কাজ করছে, rsync বেশিরভাগ একটি ড্রপ ইন প্রতিস্থাপন করা উচিত।


149
2018-04-29 05:11



"কোনও তথ্য স্থানান্তরিত করা হবে না" অবশ্যই, ডেটা অবশ্যই ঠিক আছে বা পরিবর্তন করেনি তা নির্ধারণ করার জন্য প্রয়োজনীয়। - thsutton
হ্যাঁ হ্যাঁ আমি স্পষ্টভাবে একটি বিট উপর glossed। আমরা এখানে কোয়ান্টাম entanglement কথা বলছি না। - Phil Hollenback
এটা খুবই দুঃখজনক যে osx, win7 এবং এমনকি উবুন্টু তাদের GUI এর জন্য rsync মত কিছু ব্যবহার করে না। - cregox
ডমৌরতি আমি তার প্রশ্নের উত্তর দিলাম। আমি তাকে এটা করার একটি ভাল উপায় বলা। - Phil Hollenback
@raphnguyen: না, স্থানীয় ডিরেক্টরি থেকে ফাইল মুছে ফেলা হলে সেগুলি দূরবর্তী ডিরেক্টরি থেকে মুছে যাবে না। আপনি এই আচরণ চালু করতে পারেন --delete rsync বিকল্প। - Phil Hollenback


যে কি -r বিকল্প জন্য। :)

দেখুন scp মানুষ পাতা প্রয়োজন হলে আরো তথ্যের জন্য।


30
2018-04-29 04:27





Recursive কপি বিকল্প '-আর' (নিম্ন ক্ষেত্রে)

scp -r

যা আমি নিয়মিত স্থানীয় recursive কপি বিকল্প '-আর' (উচ্চ ক্ষেত্রে) সঙ্গে বিভ্রান্ত

cp -R

9
2017-09-11 17:53



আমি সিপি এবং স্ক্পের মধ্যে পার্থক্যটি নির্দেশ করতে চেয়েছিলাম -আর এবং -আর একই নয়। unix.stackexchange.com/questions/18712/... - Tarun


সেরা উপায় SSH উপর rsync ব্যবহার করা হয়

rsync -a -essh /source/ user@dest-server:/dest/

rsync -a -essh user@source-server:/source/ /dest/

আমার পছন্দের অপশনগুলি হল- Pazvessh - ডিলেট:

  • -a: সংরক্ষণাগার মোড (সিমলিং সংরক্ষণ সহ অনেকগুলি ডিফল্ট সাধারণ বিকল্প অন্তর্ভুক্ত করুন)
  • -জে: কম্প্রেস
  • -v: verbose: ফাইল প্রদর্শন
  • -পি: ফাইল শেষ / অবশিষ্ট ফাইল হিসাবে প্রোগেস প্রদর্শন
  • s ssh: ssh প্রোটোকল মধ্যে rsync না
  • --delete: উৎসের মধ্যে আর নেই এমন গন্তব্যের ফাইল মুছে ফেলুন

4
2017-11-05 18:33



সব সংস্করণ rsync যে আমি ব্যবহার করতে হবে ssh ডিফল্টরূপে, তাই -essh প্রয়োজন হতে পারে না। এবং রিমোট হোস্টের সাথে সংযোগ করার জন্য ব্যবহৃত কমান্ডের পছন্দটি পুনরাবৃত্তিমূলকভাবে অনুলিপি করার সাথে সম্পর্কিত নয়। - kasperd


Recursive অনুলিপি পতাকা খুঁজছেন পরে, এবং সফলভাবে এই পোস্ট ধন্যবাদ ধন্যবাদ, আমি শুধু একটি পরামর্শ পোস্ট করতে চাই।

যদি কেসটি আপনি একটি ডিরেক্টরি অনুলিপি করা হয় (recursively)। ফাইল কম্প্রেস পাঠানো হয় যদি আপনি স্থানান্তর সময় সংরক্ষণ করতে পারে

আমি শেষ পর্যন্ত কি ছিল:

local$ tar -czvf local.tar.gz directory/
local$ scp local.tar.gz user@remote:/directory
ssh user@remote
remote$ tar -xzvf local.tar.gz

আশাকরি এটা সাহায্য করবে


3
2018-06-06 18:00



ফাইল এক্সটেনশান হতে হবে .tar.gz অথবা .tgz যেহেতু ফাইল একটি gzipped টার্ন আর্কাইভ (থেকে -z পতাকা ব্যবহার করা হয়)। - anthonybell


আপনি এই সহজ কমান্ডের সাহায্যে কম্প্রেসযুক্ত সংরক্ষণাগারে একটি ডিরেক্টরি অনুলিপি করতে পারেন:

ssh -p 22 user@address-to-copy-from.com  'cd /parent/directory && tar zcvf - directory_to_copy' > /destination/on/your/machine/archive_name.tgz

উদাহরণস্বরূপ, বিষয়বস্তু কপি করতে /var/log থেকে domain.com থেকে ~/logs.tgz আপনি চালান:

ssh -p 22 user@domain.com  'cd /var && tar zcvf - log' > ~/logs.tgz

আপনি পাইপ ব্যবহার করে লক্ষ্য সিস্টেম ফাইল মুছে ফেলতে পারেন। এই কমান্ড বিষয়বস্তু কপি করবে /var/log এ domain.com থেকে ~/destination/log আপনার সিস্টেমে:

ssh -p 22 user@domain.com  'cd /var && tar zcvf - log' | tar xzf - -C ~/destination

একটি ডিরেক্টরি মিরর যদিও, আপনি সম্ভবত ব্যবহার করা উচিত rsync...


1
2018-01-06 07:20





আপনি যদি ব্যবহারকারীর পাসওয়ার্ডটি ইন্টারেক্টিভভাবে ইনপুট করার পরিবর্তে প্যারামিটার হিসাবে পাস করতে চান তবে আপনি এটি ব্যবহার করতে পারেন sshpass(sudo apt-get install -y sshpass)।

উদাহরণ:

sshpass -p 'remote_password' scp -rp /src/folder myremoteusername@122.10.12.123:/dest/folder

0
2018-01-06 06:49