কীভাবে FTP- র মাধ্যমে rsync ব্যবহার করবেন


187

যে কোনও ইউনিক্স:

আমার নীচের সিএমডি লাইন রয়েছে যা সূক্ষ্মভাবে কাজ করে।

rsync -avr -e ssh /home/dir user@example.com:/home/

তবে এখনই এটি সেট করতে হবে এমন একটি রিমোট সার্ভারে আরএসইএনসি করতে যাতে এটিতে কেবল একটি এফটিপি সার্ভার থাকে। আমি কিভাবে এটি সম্পর্কে যেতে পারি?

আমি আরএসসিএনসি সাহায্যের দিকে তাকালাম তবে দ্রুত হারিয়ে গেলাম (আমি এই জিনিসটি প্রায়শই করি না)।


21
আইআরসি-র মাধ্যমে কীভাবে এইচটিটিপি ব্যবহার করা যায়, বা এসএমটিপি-র মাধ্যমে কীভাবে এফটিপি ব্যবহার করা যায় তা জিজ্ঞাসার অনুরূপ ...
জুলিয়ানো

2
এটি করতে ইচ্ছুক হওয়ার জন্য আপনি আপনার যুক্তির কিছু ব্যাখ্যা করতে পারেন, তবে আমরা আপনাকে একটি কার্যকর সমাধান সহকারে আসতে সহায়তা করতে পারি।
জেমস

1
মূলত আমি একটি ভাগ করা হোস্টিং সার্ভার থেকে একটি ব্যাকআপ স্বয়ংক্রিয় করার চেষ্টা করছিলাম এবং আরএসসিএন কীভাবে কাজ করেছিল তা বুঝতে পারি নি। আমি এখন একটি
ভিপিএসে চলে এসেছি


যদি মোতায়েন হয়, আপনার মনে কী আছে এবং আপনি নোডজেএসকে কিছু মনে করেন না, ডিপ্লাই , অলস এবং গিটের সাথে ভাল কাজ করেন
ফ্রাঙ্ক নোক

উত্তর:


78

আপনি না। আরএসআইএনসি এটি আপনার পক্ষে করতে পারে না, এটি এটির নিজস্ব একটি প্রোটোকল এবং এফটিপি-র উপর কাজ করে না।

আপনি তবে সাইকিং চেষ্টা করতে পারেন । আইআইআরসি এটি এইচটিটিপি-র মাধ্যমে আরএসসিএন-এর মতো আচরণ সরবরাহ করে। এটি এফটিপি-র কাজ করে কিনা সে বিষয়ে আমি মন্তব্য করতে পারি না, আপনাকে এটি চেষ্টা করে দেখতে হবে।


1
সিসিএনসি ওয়েব পৃষ্ঠার দিকে তাকালে এটি এসএফটিপি সমর্থন করে তবে প্লেইন এফটিপি-র জন্য সমর্থন করার কোনও উল্লেখ নেই।
কিথ থমসন

162

আরএসসিএনসি অন্যরা যে কারণে উল্লেখ করেছে তার জন্য আপনার পক্ষে কাজ করবে না। তবে, lftp এবং ncftp উভয়ের "আয়না" মোড রয়েছে যা সম্ভবত আপনার প্রয়োজনগুলি পূরণ করবে meet

আমি আমার স্থানীয় ডিরেক্টরি থেকে কোনও এফটিপি বা এসফ্টপি ওয়েব হোস্টে স্টাফ ঠেকাতে এটি ব্যবহার করি:

lftp -c "set ftp:list-options -a;
open ftp://user:password@your.ftp.com; 
lcd ./web;
cd /web/public_html;
mirror --reverse --delete --use-cache --verbose --allow-chown  
--allow-suid --no-umask --parallel=2 --exclude-glob .svn"

2
lftp খুব সুন্দর। আমি আর একটির সন্ধান করেছি wputযা অন্তর্নির্মিত ব্যান্ডউইথ সীমিত করেছে।
কর্মকাজে

122

ইজেল দ্বারা লিখিত হিসাবে , lftpএকটি ভাল সরঞ্জাম।

আমি আপনাকে স্ক্রিপ্টটি প্যারামিট্রাইজ করতে এবং এর ব্যবহার করার পরামর্শ দিচ্ছি

exclude-glob

বিকল্পগুলি, যা আপনার শেলের গ্লোব বৈশিষ্ট্য (* ,? ..) ব্যবহার করে ফাইলের নাম বাদ দেয়:

#!/bin/bash    
HOST="your.ftp.host.dom"
USER="username"
PASS="password"
FTPURL="ftp://$USER:$PASS@$HOST"
LCD="/path/of/your/local/dir"
RCD="/path/of/your/remote/dir"
#DELETE="--delete"
lftp -c "set ftp:list-options -a;
open '$FTPURL';
lcd $LCD;
cd $RCD;
mirror --reverse \
       $DELETE \
       --verbose \
       --exclude-glob a-dir-to-exclude/ \
       --exclude-glob a-file-to-exclude \
       --exclude-glob a-file-group-to-exclude* \
       --exclude-glob other-files-to-exclude"

সতর্কতা: লক্ষ্য ডিরেক্টরিটি উপস্থিত রয়েছে তা নিশ্চিত করুন, অন্যথায় সিডি কমান্ড ব্যর্থ হবে, সুতরাং ফাইলের গাছ মুছে ফেলা সহ অপারেশনটি ভুল ডিরেক্টরিতে (রুট) সঞ্চালিত হবে!

আমি স্ক্রিপ্ট আপডেট করেছি যাতে --deleteবিকল্পটি ডিফল্ট দ্বারা অক্ষম করা হয়, এটিকে সংকোচনের মাধ্যমে সক্ষম করুন DELETE= command


আমাকে একটি দুর্দান্ত দলকে সাহায্য করেছে। তবে আমাকে "সেট এফটিপি: তালিকা-বিকল্পগুলি -a" সরিয়ে ফেলতে হয়েছিল; যেখানে গোলমাল জিনিস।
মাদুর

1
এর মতো কিছু আছে যা এসএফটিপি (এফটিপিএস?) এর উপর একই কাজ করে?
trusktr

1
আমি আগে এই কাজ করতে হবে cd $RCDযাতে ঘটনাক্রমে ভুল ডিরেক্টরি থেকে ফাইল মুছে ফেলার থেকে একটি-স্ক্রিপ্ট-সঙ্গে-টাইপো প্রতিরোধ: set cmd:fail-exit yes। (মনে হচ্ছে lftpলক্ষ্য এই নয় যে এটা আসলে থেকে প্রস্থান করেছেন না হওয়া পর্যন্ত আপনি পরবর্তী কমান্ড।) - আর সামনে cd $LCDআমি এই কাজ চাই (স্থানীয় শেল, যে বটুয়া উপরের হল): set -eu
কাজম্যাগনুস

3
প্রকৃতপক্ষে, আমি প্রথমবার আমার স্ক্রিপ্টটি চালাচ্ছি, আমি এখনও রিমোট ডিরেক্টরিটি তৈরি করতে পারি নি, সুতরাং স্ক্রিপ্টটি সেই অস্তিত্বহীন দির সিডি করতে ব্যর্থ হয়েছিল। তারপরে স্ক্রিপ্টটি শুরু হয়েছিল mirrorএবং এভাবে --delete: ভুল ফাইল থেকে ডি ফাইলগুলি। (তবে আমি তাদের আবার অনুলিপি করেছি, সুতরাং
সেক্ষেত্রে

1
পাশাপাশি 'সেট -ইউ' এবং 'সিডি $ এলসিডি' ব্যবহারের বিষয়ে @ কাজম্যাগনাসের পরামর্শ অনুসরণ করে 'সিডি $ এলসিডি' এর আগে 'এমকেডির-পি $ এলসিডি' যুক্ত করুন - এইভাবে আপনি নিশ্চিত হতে পারেন যে ডিরেক্টরিটি বিদ্যমান এবং আপনি ' এটি আবার।
পল গিয়ার

25

আপনি আসলে যা করার চেষ্টা করছেন তার উপর নির্ভর করে অন্য একটি সম্পূর্ণ ভিন্ন পন্থা curlftpsএকটি এফটিপি ফোল্ডার মাউন্ট করার জন্য ব্যবহার করা যেতে পারে এবং তারপরে সম্ভবত rsyncদুটি "স্থানীয়" ফোল্ডার।

ইনস্টলেশন আপনার ডিস্ট্রো উপর নির্ভর করে তাই আমি যে সাধারণের না পারেন, ভিন্ন, কিন্তু আপনি ইনস্টল করতে হবে fuseএবং curlftpfs(prolly ডেবিয়ান ইতিমধ্যে fuseডিফল্টরূপে ইনস্টল), তারপর:

  1. sudo apt-get install curlftpfs

  2. fuseমডিউলটি লোড হয়েছে কিনা তা নিশ্চিত করুন ( modprobe fuse)

  3. sudo curlftpfs ftp.yourserver.com /path/to/ftp/folder/ -o user=username:password,allow_other

নোট করুন যে শেষ কমা পরে কোনও স্থান নেই (এটি টাইপো নয়!)। আপনি যদি এতে সন্তুষ্ট হন বা প্রতিবার এটি তৈরি করতে না চান তবে আপনি এটিকে আপনার fstab এ যুক্ত করতে পারেন (সাধারণত /etc/fstab)

curlftpfs#user:password@ftp.yourserver.com /path/to/ftp/folder/ fuse auto,user,uid=1000,allow_other 0 0

সেক্ষেত্রে আপনাকে নিশ্চিত করতে হবে যে ফিউজ মডিউলটি আগে লোড হয়েছে।

দুটি বিষয় সম্পর্কে তবে পরামর্শ দিন:

  • যে বিকাশকারী এক বা দুই বছর আগে এই প্রকল্পটি ফেলেছিল, তাই আপাতত কতটা ব্যবহারযোগ্য / স্থিতিশীল তা আমি জানি না।
  • পাসওয়ার্ডে একটি অদ্ভুত অক্ষর থাকলে curlftpfsব্যর্থ হতে পারে (সম্ভবত আপনি এর সাথে কিছু করতে পারেন .netrc)।

এফটিপি ফিউজ এবং আরএসইএনসি প্রশ্নের নিকটতম তবে ছোট ফাইলগুলির একটি ছোট সেট ব্যতীত অন্য কোনও বিষয়ে স্পষ্টভাবে উন্মাদ ane
স্টিভ-ও

1
পাগল হবে কেন? ডিফল্ট rsync স্ট্যাটাস (গুলি) দ্বারা এটি সামগ্রীগুলির তুলনা করে না। এটি একটি এফটিপি ক্লায়েন্টের সাথে ls -l দ্বারা করা যেতে পারে।
পিটিম্যান

আমি আসলে এটি চেষ্টা করেছি (আরএসএন্যাপশটের মাধ্যমে) এবং এটি কার্যকর হয়নি, প্রতিটি ফাইল ফিরে এসে ত্রুটি করে দেখিয়েছিল যে আরএসসিএনসি কোনও লিঙ্ক তৈরি করতে পারে না। সুতরাং আরএসএন্যাপশটের সাথে মিলে এলএফটিপি ব্যবহার করে কৌতুকটি করেছেন
কনস্ট্যান্টিন পেরিয়াস্লোভ

14.04 এলটিএসে নির্দোষ; একটি অতিরিক্ত টিপ: যখন আপনি আপনার FTP সাইটে আন-মাউন্ট করা করার জন্য প্রস্তুত হন কেবল ব্যবহার umount DIRযেখানে DIRআপনার ছিল /path/to/ftp/folderউপরে।
জো

1
2017, এবং এটি এখনও কার্যকর! সত্যিই কোনও এফটিপি সাইট এনামেস থেকে ফাইলগুলি অনুলিপি করার সহজ উপায়। স্থানীয়ভাবে মাউন্ট করুন, তারপরে rsync যেন এটি স্থানীয়
td512

16

নেই weex ...

ওয়েেক্স হ'ল একটি ইউটিলিটি যা কোনও ওয়েব পৃষ্ঠা বা অন্যান্য এফটিপি সংরক্ষণাগারকে দূর থেকে রক্ষণাবেক্ষণের কাজটি স্বয়ংক্রিয় করতে ডিজাইন করা। এটি প্রয়োজনীয় ফাইলগুলি আপলোড এবং রিমোট মোছার মাধ্যমে একটি দূরবর্তী সার্ভারে স্থানীয় ফাইলগুলির একটি সেট সিঙ্ক্রোনাইজ করবে।


2
মোহন মত কাজ! আপনি এটির মতো এটি চালাচ্ছেন: $ weex yourFTPconfigNameএখানে ম্যানুয়াল linuxcertif.com/man/1/weex
sobi3ch

9

rsync এফটিপিপি-র উপর কাজ করে না। রিমোট পার্শ্বে এটির জন্য আরএসইএনসি ডেমন বা একটি শেল দরকার যা এটি থেকে rsync কল করতে পারে। Ftp সাধারণত আপনাকে কয়েকটি কমান্ড কল করতে দেয় এবং আরএসসিএন সেগুলির মধ্যে একটি নয়। "এলএফটিপি" এর মতো এফটিপি কার্যগুলি স্বয়ংক্রিয় করার জন্য অন্যান্য সরঞ্জাম রয়েছে।


8

এটি একটি ভাল এবং বিনামূল্যে ফিটের মতো বলে মনে হচ্ছে: https://savannah.gnu.org/projects/ftpsync/


1
সোফারফর্স-এ-দশ-ফুট-খুঁটির সাথে স্পর্শ না করে স্টিমিং গাদাটি ইদানীং হয়ে গেছে, সম্ভবত আপনার প্রকল্পের ওয়েবপৃষ্ঠায় লিঙ্কটি আপডেট করা উচিত ।
আশাহীন N00b

7

এটি প্রদর্শিত হওয়ার জন্য যা আপনি করার চেষ্টা করছেন, আপনি উইজেটও ব্যবহার করতে পারেন।

wget -m ftp: // ব্যবহারকারীর নাম: password@domain.com


এটি কেবল সাইটের একটি আয়না তৈরি করবে। আপনি আপনার পরিবর্তনগুলি আপলোড করতে এটি ব্যবহার করতে পারবেন না।
ডেভিড ভি।

5

আপনি এফটিপি মাউন্ট করতে কার্লফ্টপিএফস ব্যবহার করতে পারেন এবং http://linux.die.net/man/1/curlftpfs এর পরে rsync ব্যবহার করতে পারেন


সার্ভারফল্টে আপনাকে স্বাগতম! এটি একটি ভাল শুরু হতে পারে, তবে কেন এটি আরও ভাল পদ্ধতির, এবং সম্ভবত এটি কীভাবে করা যায় সে সম্পর্কে একটি মক আপ করা যুক্তিযুক্ত আরও কিছু প্রযুক্তিগত বিবরণ যুক্তিসঙ্গত হতে পারে।
স্কট প্যাক

4

আমি জিভিএফএস / এফটিপি ব্যবহার করছি। আমি আমার রিমোট এফটিপি সার্ভারগুলি জিগোলোর সাথে মাউন্ট করব। যেহেতু তাদের স্থানীয় ডিরেক্টরি হিসাবে দেখা যায় প্রায় স্থানীয় ফাইলগুলিতে কাজ করে। আরএসআইএনসি ফাইল হ্যাশগুলি দূরবর্তীভাবে ফাইলগুলি স্থানান্তর না করে তুলনা করতে ডিজাইন করা হয়েছে, তবে ভার্চুয়াল ফাইলগুলির সাথে ফাইলগুলি যেভাবেই স্থানান্তরিত করে। একত্রীকরণ এবং ফ্রিফাইলেসিসিএন সাধারণত ভালভাবে কাজ করে তবে আমি যখন আপনার আপলোড করা কোনও ফাইলের নাম পরিবর্তন করতে চাই, তখন সমস্যা হয় না এমন সমস্যা আমার হয়ে যায়। এটি gvfs 1.6.1 এর সাথে সমস্যা হতে পারে।


3

জোনাস এস এর সমাধান পরিস্থিতিতে নির্ভর করে কার্যকর হতে পারে, উদাহরণস্বরূপ আপনার যদি উচ্চ ডাউনলোডের গতি এবং ধীর আপলোড থাকে তবে সার্ভারে ফাইলগুলি পরীক্ষা করা অপ্রয়োজনীয়ভাবে ফাইল আপলোড করার চেয়ে তুলনামূলক দ্রুত হতে পারে।

আপনি সম্ভবত কার্লএফটিপিএফএস ব্যবহার করতে চান, যদিও: http://packages.ubuntu.com/search?suite=default§ion=all&arch=any&searchon=names&keywords=curlftpfs

যদিও, সাধারণত, নিয়মিত এফটিপি ক্লায়েন্টটি আরএসসিএন-এর পরিবর্তে পুরোপুরি ব্যবহার করা ভাল।


2

আপনি বিশ্বাস করতে পারেন না যে আপনি এটি করতে সক্ষম হবেন, আপনি যে সার্ভারটি রাইকিঙ্ক করার চেষ্টা করছেন সেটি কেবল একটি এফটিপি সার্ভার চলবে, রাইকিঙ্ক এটি পাঠাচ্ছে এমন আদেশগুলি বুঝতে পারে না।

আপনি যদি এটি করতে চান তার কারণটি হ'ল আপনার কেবল পোর্ট 21 এ অ্যাক্সেস রয়েছে তবে সার্ভারের আপনার নিয়ন্ত্রণ রয়েছে, আপনি সার্ভারে রাইয়াইক পোর্টটি পরিবর্তন করতে পারেন তবে এটি স্পষ্টতই কার্যকর যদি আপনি না করেন যে বন্দরে এফটিপি ব্যবহার করতে চান।


2

যদি আপনি টাস্কটি স্বয়ংক্রিয় করতে চান তবে কিছু লোক উপরে যেমন পোস্ট করেছেন তেমন স্ক্রিপ্ট তৈরি করতে আপনি এলএফটিপি ব্যবহার করুন, আপনি যদি একবারের সমাধানের সন্ধান করেন (তবে আপনাকে একটি সম্পূর্ণ ওয়েবসাইট ডাউনলোড করতে হবে) এফটিপি / অন্য সার্ভারে সরান) এনসিএফটিপি ব্যবহার করুন, এটি সাধারণ, এটি ইতিমধ্যে ইনস্টল না থাকলে এটি ইনস্টল করুন:

apt-get install ncftp

অথবা

yum install ncftp

(দুঃখিত নন ডেবিয়ান / রেড টুপি ভিত্তিক ডিস্ট্রোস ..)

একবার ইনস্টল হয়ে গেলে, টার্মিনালে এনসিএফপি খুলুন তারপর টাইপ করুন:

open -u ftpusername ftp.thedomain.com

এটি আপনাকে পাসওয়ার্ডের জন্য জিজ্ঞাসা করবে, এটি প্রবেশ করান এবং তারপরে:

get -R /home/remotewebsite/public_html/ /home/localwebsite/public_html/

এটি আপনার জন্য বাকী পিএফ কাজটি করবে .. সৌভাগ্য



0

ওপুটও আছে:

wput --timestamping --reupload --dont-continue source-files ftp://target.host/dir

ব্যবহারকারীর নাম এবং পাসওয়ার্ড ~ / .netrc থেকে পড়ে। অন্যথায়, আপনি যদি সুরক্ষার সাথে বিশেষভাবে উদ্বিগ্ন না হন তবে আপনি এগুলি ftp: // ব্যবহারকারীর নাম: password@target.host হিসাবে সরবরাহ করতে পারেন ।


0

আমি তার জন্য নিজস্ব কমান্ড-লাইন সরঞ্জাম তৈরি করেছি: ftpsync

কেন? এটি সহজ এবং মার্জিত কারণ, অন্যান্য সরঞ্জামগুলির অনেকগুলি নির্ভরতা প্রয়োজন, কখনও কখনও সংকলন করা হয়, কখনও কখনও কাজ করে না (যেমন ম্যাকওস হাই সিয়েরায় lftp)। খাঁটি পাইথন-এ ফিটসসিঙ্ক লেখা হয়, তৃতীয় পক্ষের লিবসের প্রয়োজন হয় না এবং এটি ছোট, আপনি কেবল আপনার প্রকল্পে ফাইলটি অন্তর্ভুক্ত করতে পারেন।

ব্যবহার: আপনার প্রকল্প ডিরেক্টরিতে সিডি করুন এবং টাইপ করুন:

ftpsync user:pass@ftp.address.url/remote/dir --delete

--delete স্থানীয়ভাবে বিদ্যমান না এমন দূরবর্তী ফাইলগুলি মুছে ফেলার জন্য দাঁড়ায়।

আপনি যদি সিঙ্ক করতে না চান তবে কেবল কাঁচা ftp কমান্ড ব্যবহার করুন:

ftpsync -c '...'

এটি কিছু সাধারণ ক্রিয়াকলাপের জন্য দরকারী যেমন ফাইল প্রেরণ এবং এর নামকরণ:

ftpsync -c 'PASV; TYPE I; STOR some_file.ext; RNFR some_file.ext; RNTO some_file_renamed.ext'

অন্যদের মতো একই কারণে এই কারণে হোঁচটে পড়েছে। এফটিপি প্রোটোকলের মাধ্যমে একটি ভাল সিঙ্ক ইউটিলিটির প্রয়োজন। আপনার সরঞ্জামটি দেখতে দুর্দান্ত দেখাচ্ছে, তবে আমি এটি ব্যবহার করতে পারি না, কারণ আমার প্রয়োজনটি দূরবর্তী থেকে ডাউনলোড করা এবং স্থানীয় সাথে সিঙ্ক করা। আমি ইতিমধ্যে ডাউনলোড করা ফাইলগুলি ডাউনলোড করা এড়াতে চাই। স্থানীয়ভাবে আমি ডাউনলোড করা ফাইলগুলিতে একটি প্রক্রিয়াজাতকরণ করি যা এটি আলাদা করে তোলে; পরের বার এফটিপি স্ক্রিপ্টটি চালানো উচিত ipped এই মুহুর্তে একটি কঠিন সমাধান খুঁজে বের করা।
অনুপ

হ্যাঁ, এটি আসলে একমুখী সিঙ্ক।
সুপারডারিও 128

0

rclone একটি দুর্দান্ত সফটওয়্যার যা এফটিপি এবং ক্লাউড স্টোরেজ সরবরাহকারী (অ্যামাজন এস 3, ড্রপবক্স, গুগল ড্রাইভ) সহ অন্যান্য প্রোটোকলগুলির সাথে ডিরেক্টরি সিঙ্ক্রোনাইজেশন করে। এটি স্থানীয় বা দূরবর্তী স্টোরেজের যেকোন সংমিশ্রণে / থেকে সিঙ্ক্রোনাইজ করতে পারে।

ftpরিমোট সেটআপ করতে এই নির্দেশাবলী অনুসরণ করুন ।

এটি হয়ে গেলে, সিঙ্ক ক্রিয়াকলাপটি হ'ল:

rclone sync /home/dir FTP_REMOTE:/home --progress 

-7

Sftp ইনস্টল করুন এবং তারপরে আপনি rsync ব্যবহার করতে পারেন।

আমি নিম্নলিখিতটি ব্যবহার করি।

rsync --delete --times --recursive --perms --owner --group --verbose --progress --stats -e ssh root@192.168.0.100:/folder1/ /folder2/

7
এটি এফটিপি নয় এটি সম্ভবত এসএসএইচের অভ্যন্তরীণ এসফটিপ সাবসিস্টেম ব্যবহার করে (কমপক্ষে এটি ডিফল্ট কনফিগারেশনে যা
ঘটে

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