কোনও ডিরেক্টরি স্থানান্তর করতে sftp ব্যবহার করছেন?


50

আমি যখন ফাইলগুলি সম্বলিত ডিরেক্টরি স্থানান্তর করতে sftp ব্যবহার করার চেষ্টা করি তখন আমি একটি ত্রুটি বার্তা পাই:

skipping non-regular file directory_name

ডিরেক্টরিটিতে বেশ কয়েকটি ফাইল এবং দুটি উপ ডিরেক্টরি রয়েছে।

আমি কি ভুল করছি?

উত্তর:


48

sftpযেমন cpএবং scpএরও দরকার হয় যে আপনি যখন কোনও ফোল্ডারটি (এবং এর সামগ্রীগুলি স্পষ্টতই) অনুলিপি করেন তখন আপনাকে স্পষ্টভাবে বলতে হয় যে আপনি -rবিকল্পটি দিয়ে পুনরাবৃত্তভাবে ফোল্ডারটি স্থানান্তর করতে চান ।

সুতরাং, -rকমান্ড যোগ করুন ।


2
-আর কমান্ডের পরে? আমি যদি একটি "পুট: অবৈধ পতাকা -আর" ত্রুটি বার্তা বার্তা পাচ্ছি তবে তা করি। এটিকে মূল sftp কমান্ডে যুক্ত করাও কার্যকর হয় না।
হাজিজ

5
যোগ -rকরার জন্য sftpকমান্ড যখন আপনি সংযুক্ত করছি। sftp -r user@host
কেভিন

1
: @Kevin আমি নিম্নলিখিত ত্রুটি পাচ্ছি "অজানা বিকল্প --r SFTP"
Amatya

2
সতর্ক থাকুন সেখানে যে বেশ দীর্ঘ স্থায়ী বাগ OpenSSH- র এর এসএফটিপি মধ্যে যখন যাও recursively একটি দূরবর্তী সার্ভারে একটি ডিরেক্টরি অনুলিপি, ডিরেক্টরি নিজেই ইতিমধ্যে লক্ষ্য সার্ভারে বিদ্যমান থাকা আবশ্যক অন্যথায় স্থানান্তর একটি অ-স্পষ্ট ত্রুটি বার্তা ব্যর্থ হয়ে যাবে: Couldn't canonicalise: No such file or directory
হোয়াইটউইন্টারওয়াল্ফ

5
এর মতো কিছু হওয়া উচিত:# sftp user@remote-host #> get -r remote-folder
hbinduni

20

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

rsync -alPvz ./source_dir server.com:destination_dir

আমি এখন বছরের পর বছর ধরে এটি ব্যবহার করে আসছি।

( -aবিকল্পটি ডিরেক্টরি পুনরাবৃত্তির মতো জিনিসের যত্ন করে)


3
উল্লিখিত প্যারামিটারগুলিতে কিছুটা স্পষ্টতা: -a= পুনরাবৃত্তি + প্রতীকী লিঙ্ক, অনুমতি, পরিবর্তনের সময়, মালিক, গোষ্ঠী, বিশেষ ফাইল এবং ডিভাইস ফাইল রাখুন (পরবর্তীটির জন্য সুপার-ব্যবহারকারীর সুবিধাগুলি প্রয়োজন); -l= প্রতীকী লিঙ্কগুলি রাখুন (ইতিমধ্যে এতে অন্তর্ভুক্ত -a); -P= স্থানান্তর চলাকালীন অগ্রগতি দেখান + আংশিক স্থানান্তরিত ফাইল রাখুন; -v= ভার্জোজ মোড (তবে -Pকোনও অদ্ভুত (বাগ?) protocol version mismatchত্রুটি এড়াতে ব্যবহার করার সময় এটি বাধ্যতামূলক বলে মনে হয় ); -z= স্থানান্তরিত ডেটা সংক্ষেপণ সক্ষম করুন।
হোয়াইটউইন্টারওয়াল্ফ

@ হোয়াইটওয়ানটার ওল্ফটি মনে হচ্ছে এটি -lস্যুইচটি ব্যবহার করতে হবে কিনা তা নির্ভর করে সংস্করণ নির্ভর । আমার মনে আছে পুরানো সংস্করণগুলি এতে অন্তর্ভুক্ত ছিল -lনা -a
পোলেমন

5

আপনি ব্যবহার করতে সক্ষম হতে পারেন scp। সাধারণ বিন্যাসটি হয়

scp -rp sourceDirName username@server:destDirName

scpএর অর্থ "সুরক্ষিত অনুলিপি"। পতাকাগুলি হয়

  • -r সাব ডিরেক্টরিতে পুনরাবৃত্তি
  • -p পরিবর্তনের সময় সংরক্ষণ করুন

আমি বিশ্বাস করি যে বাকি আইটেমগুলি স্ব-ব্যাখ্যামূলক


এবং scp -rp -P <port> .... একটি মানহীন বন্দর ব্যবহার করার সময়
পাঁচো

4

এটি আমার পক্ষে কাজ করে:

1) sftpরিমোট হোস্টের মাধ্যমে সংযোগ করুন

2) আপনি অনুলিপি করতে চান এমন দূরবর্তী ডিরেক্টরিতে পরিবর্তন করুন। (উদাহরণ: সিডি সংগীত)

৩) আপনি যে স্থানীয় ডিরেক্টরিতে অনুলিপি করতে চান তাতে স্থান পরিবর্তন করুন। (উদাহরণ: এলসিডি ডেস্কটপ)

4) এই আদেশ জারি করুন: get -r *


4

যদি rsyncকোনও বিকল্প না হয় তবে আমি পরবর্তী পরামর্শ দেব lftp:

lftp sftp://user@host.com/path/path/

তারপরে mirrorপুনরাবৃত্তভাবে আপলোড করতে কমান্ডটি ব্যবহার করুন :

mirror -R

(উল্লেখ্য যে recursion ডিফল্ট দ্য। -Rজন্য বিপরীত - ডাউনলোড পরিবর্তে আয়না কমান্ড আপলোড করতে জোড়ার চেষ্টা করুন। --dry-runনিশ্চিত করুন যে এটি করছে আপনি কি আশা করতে একটি বিচারের করতে।)

বা পুনরাবৃত্তি ছাড়াই আপলোড করতে:

mirror --no-recursion

আপনি cdযে ডিরেক্টরিগুলি আয়না করতে চান তাতে আপনাকে প্রবেশ করতে হবে। দুর্দান্ত কাজ!


2

আপনি যদি পারেন তবে এসএসএফএস ব্যবহার করুন । এটি একটি FUSE ফাইল সিস্টেম রয়েছে, যা বেশিরভাগ আধুনিক ইউনিয়নে পাওয়া যায় এবং যে কোনও এসএফটিপি সার্ভারের সাথে কাজ করে। এটি একটি রিমোট ফাইল সিস্টেম: এটি আপনাকে সাধারণ ইউটিলিটিগুলি সহ রিমোট ফাইলগুলি (এসএফটিপি প্রোটোকলের উপরে) ম্যানিপুলেট করতে দেয়।

mkdir /mount/point
sshfs server.example.com:/remote/path /mount/point
ls /mount/point
cp -Rp /mount/point/somedir /local/location
fusemount -d /mount/point

0

এটি কিছুটা ক্লেডজ তবে আমার জন্য যা কাজ করে তা হ'ল:

  1. sshরিমোট মেশিনে লগইন করতে ব্যবহার করুন
  2. ব্যবহার করুন sftpআপনার স্থানীয় মেশিনে দূরবর্তী মেশিন থেকে
  3. তারপরে ডিরেক্টরিটি এবং তার সমস্ত ফাইল সরিয়ে নিতে বিকল্প getসহ কমান্ডটি ব্যবহার করুন -r

1
-r এর সাথে কাজ করবেন নাsftp> get -r data /opt/bin get: Invalid flag -r
স্কাইনেট

0

যদি আপনি প্রশ্নটি করেন যে 'ডিরেক্টরিতে স্থানান্তর করতে আমি কীভাবে এসফটিপি ব্যবহার করব', তবে

 sftp -r user@server

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

sCP

এক সময় স্থানান্তরের জন্য, আপলোড করার চেষ্টা করুন:

 # upload source directory to remote server
 scp -rp source_dir user@server:dest

 #download directory from remote server:
 scp -rp user@server:source_dir dest

 #specifying ssh key:
 scp -rp -i ~/.ssh/key user@server:source_dir dest

 #remote directory has spaces
 scp -rp -i ~/.ssh/key user@server:"source\\ dir" dest

rsync

আপনি যদি নিয়মিতভাবে ডিরেক্টরিগুলি সিঙ্ক করার পরিকল্পনা করে থাকেন তবে rsync ব্যবহার করা আরও অর্থবোধক। এটি দুটি ডিরেক্টরিতে ডেল্টাস সম্পাদন করে, তারের মাধ্যমে স্থানান্তর সময় এবং ডেটা সাশ্রয় করে।

rsync -r -a -v -e ssh --delete source_dir user@server:dest

এখানে বেশ কয়েকটি সাধারণ আরএসএনসি বিকল্পের একটি তালিকা রয়েছে: ( এখান থেকে নেওয়া )

  • - মুছে ফেলা - প্রেরক (সিস্টেম) এ বিদ্যমান নেই এমন ফাইলগুলি মুছুন
  • -v - ভার্বোজ (-vv আরও বিশদ তথ্য সরবরাহ করবে)
  • -e "ssh বিকল্পগুলি" - দূরবর্তী শেল হিসাবে ssh উল্লেখ করুন
  • -a - সংরক্ষণাগার মোড - এটি অনুমতি (মালিক, গোষ্ঠী), সময়, প্রতীকী লিঙ্ক এবং ডিভাইস সংরক্ষণ করে
  • -r - ডিরেক্টরিতে পুনরাবৃত্তি
  • -z - স্থানান্তরকালে ফাইলের ডেটা সংকোচন করুন
  • --excolve 'ফোল্ডারনেম' - স্থানান্তর থেকে সম্পর্কিত ফোল্ডার বাদ দেয়
  • -পি - স্থানান্তরকালে অগ্রগতি দেখান

আশা করি এইটি কাজ করবে!


0

আপনি সার্ভার থেকে আপনার স্থানীয় পথে যেতে পারেন

scp -rp user@server:directoryname(full path) .

অন্যান্য উত্তরগুলি ইতিমধ্যে পোস্ট করা কি এটি কোনও নতুন তথ্য যুক্ত করে?
41754

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